{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Optimizing Stiffness Constants\n",
    "\n",
    "Suppose we have $n$ blocks, each of width $w$, at positions $x\\in\\mathbb{R}^n$.\n",
    "The blocks are positioned between two walls at $0$ and $l$.\n",
    "The leftmost block is connected to the left wall via a spring with stiffness coefficient $k_1$,\n",
    "the rightmost block is connected to the right wall via a spring with stiffness coefficient $k_{n+1}$,\n",
    "and the $i$th block is connected to the $(i+1)$th block via a spring with stiffness coefficient $k_{i+1}$.\n",
    "The equilibrium position of all the blocks can be found by solving the optimization problem\n",
    "\\begin{equation}\n",
    "\\begin{array}{ll}\n",
    "\\mbox{minimize} & \\frac{1}{2}k_1x_1^2 + \\frac{1}{2}k_2(x_2-x_1)^2 + \\ldots + \\frac{1}{2}k_{n+1}(l-x_n)^2\\\\[.2cm]\n",
    "\\mbox{subject to} & x_1 \\geq w/2, \\quad x_n \\leq l - w/2, \\\\\n",
    "& x_i - x_{i-1} \\geq w, \\quad i=2,\\ldots,n-1,\n",
    "\\end{array}\n",
    "\\label{eq:prob}\n",
    "\\end{equation}\n",
    "with variable $x$ and solution denoted $x^\\star$.\n",
    "The objective is the potential energy of the system, and the constraints express\n",
    "the fact that the blocks have a width, and cannot penetrate each other or the walls."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# NOTE: this notebook requires ffmpeg, which can be installed on ubuntu with \"sudo apt install ffmpeg\"\n",
    "# and on mac with \"brew install ffmpeg\"\n",
    "import cvxpy as cp\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import tensorflow as tf\n",
    "from cvxpylayers.tensorflow import CvxpyLayer\n",
    "import matplotlib.patches as patches\n",
    "from matplotlib import animation, rc\n",
    "rc('animation', html='html5')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can easily set up this problem as a CVXPY problem, with parameter $k$ and variable $x$:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "n = 5\n",
    "l = 1\n",
    "w = .05\n",
    "\n",
    "k = cp.Parameter(n + 1, nonneg=True)\n",
    "x = cp.Variable(n + 2)\n",
    "objective = cp.sum(cp.multiply(k, .5 * cp.square(cp.diff(x))))\n",
    "constraints = [x[0] == 0, x[-1] == l] + [x[i] - x[i-1] >= w for i in range(1, n+2)]\n",
    "prob = cp.Problem(cp.Minimize(objective), constraints)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can easily convert this problem to a `tensorflow` `CvxpyLayer` in one line.\n",
    "The layer maps stiffness coefficients to block positions, or $x^\\star(k)$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "prob_tf = CvxpyLayer(prob, [k], [x])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Our goal is to tune the stiffness coefficients such that the block positions are close to target positions,\n",
    "or solve the problem\n",
    "\\begin{equation}\n",
    "\\begin{array}{ll}\n",
    "\\mbox{minimize} & \\|x^\\star(k) - x^\\mathrm{targ}\\|_2^2,\n",
    "\\end{array}\n",
    "\\end{equation}\n",
    "with variable $k\\in\\mathbb{R}^{n+1}$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tf.Tensor: id=21, shape=(5,), dtype=float64, numpy=array([0.04779355, 0.28081525, 0.32104743, 0.33551271, 0.80628428])>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tf.random.set_seed(1)\n",
    "k = tf.constant(tf.ones([n + 1], dtype=tf.float64))\n",
    "x_targ = tf.sort(tf.random.uniform([n], dtype=tf.float64))\n",
    "x_targ"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can (approximately) solve this problem via gradient descent:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<video width=\"432\" height=\"288\" controls autoplay loop>\n",
       "  <source type=\"video/mp4\" src=\"data:video/mp4;base64,AAAAHGZ0eXBNNFYgAAACAGlzb21pc28yYXZjMQAAAAhmcmVlAABtNG1kYXQAAAKuBgX//6rcRem9\n",
       "5tlIt5Ys2CDZI+7veDI2NCAtIGNvcmUgMTU1IHIyOTE3IDBhODRkOTggLSBILjI2NC9NUEVHLTQg\n",
       "QVZDIGNvZGVjIC0gQ29weWxlZnQgMjAwMy0yMDE4IC0gaHR0cDovL3d3dy52aWRlb2xhbi5vcmcv\n",
       "eDI2NC5odG1sIC0gb3B0aW9uczogY2FiYWM9MSByZWY9MyBkZWJsb2NrPTE6MDowIGFuYWx5c2U9\n",
       "MHgzOjB4MTEzIG1lPWhleCBzdWJtZT03IHBzeT0xIHBzeV9yZD0xLjAwOjAuMDAgbWl4ZWRfcmVm\n",
       "PTEgbWVfcmFuZ2U9MTYgY2hyb21hX21lPTEgdHJlbGxpcz0xIDh4OGRjdD0xIGNxbT0wIGRlYWR6\n",
       "b25lPTIxLDExIGZhc3RfcHNraXA9MSBjaHJvbWFfcXBfb2Zmc2V0PS0yIHRocmVhZHM9OSBsb29r\n",
       "YWhlYWRfdGhyZWFkcz0xIHNsaWNlZF90aHJlYWRzPTAgbnI9MCBkZWNpbWF0ZT0xIGludGVybGFj\n",
       "ZWQ9MCBibHVyYXlfY29tcGF0PTAgY29uc3RyYWluZWRfaW50cmE9MCBiZnJhbWVzPTMgYl9weXJh\n",
       "bWlkPTIgYl9hZGFwdD0xIGJfYmlhcz0wIGRpcmVjdD0xIHdlaWdodGI9MSBvcGVuX2dvcD0wIHdl\n",
       "aWdodHA9MiBrZXlpbnQ9MjUwIGtleWludF9taW49MjAgc2NlbmVjdXQ9NDAgaW50cmFfcmVmcmVz\n",
       "aD0wIHJjX2xvb2thaGVhZD00MCByYz1jcmYgbWJ0cmVlPTEgY3JmPTIzLjAgcWNvbXA9MC42MCBx\n",
       "cG1pbj0wIHFwbWF4PTY5IHFwc3RlcD00IGlwX3JhdGlvPTEuNDAgYXE9MToxLjAwAIAAAA1kZYiE\n",
       "ADv//vdOvwKbRZdqA5JXCvbKpCZZuVJrAfKmAAADAAARzbfBiO7AB7gb3DzjhKxCIe3LTVIyDen0\n",
       "qOCN6yNEJpSecZjThTKw15kRB4AZl03nDyeFxpCxaQ7eGcBgLD5GvkB3BnzMxTy8xNyTW4EhTYNp\n",
       "WA+IAAADAiCrTXwXfykzWRdYd64SFbHaJDlWzCQEF8lxn2fGGu19UA88YjvpqSh93x9V8tijjxTq\n",
       "Y3AI/62JDMqq8tZnePeD+SHLG/lKyG28SDoqTuALnnI/JNTyqU+wQohw1nR4Q2qS+ZUPXPLnu1bn\n",
       "hwGiP+tDobgiCvBTpyDXQvvYqM7YBHDX10VJwY80duQSoL6Q19Nx8FbF+7BV3nppK6pWLEu/CVFy\n",
       "mio9AM25a9djkG6KMddNBmhTlcviW669p3g0XBafIVF5mHWqW6V/4UkbstJwrsjhSGnJb1BHJxc1\n",
       "Wvh1eeMCAn3G0iif5fW3wLb7OrEfyHypx0pKSrn3vnX8swJT9oKNKNkk8E62CSEPn4qywOf4VOJR\n",
       "SW0gl96Y2P1L3vxZgV2VxxOl7fl5LqyGmwce7l1aid3haFznrJo3GxoBQbgUD+0RfBbfzYNRVE6R\n",
       "eDcAXHsat+l7YWaEEb+GqaKVjbOa8CD5suKBAVzH/RJHqP2jQ8O8dxfz58BZZ9rE+m2WICMdfZHv\n",
       "nIjkyYwu20vF3qBXgfxuj04PKbHQq9c5SlpHrNyLMZDx+ZSdt+Ch7y+nXR+YP5MTum1LlI1c7fAl\n",
       "POn8MSB7QZ2DPFW21NV7vfXxouxU7Lwjj2p9ezlPPpGBgceH4lL2SZiXapCqpodl88a0aeiw1Cq8\n",
       "aBxzuQqvpn/WF6MnBto3QhhhL/7GO2ZQB+lnvIeZwWgGuMiptwGItXgsRcJ054KB6/ZNn+Ir0ayn\n",
       "IvZPqZQIKtPKSwQ3wZgACbMcuCfutUheW+ttXPVRyeG93JuNtL4F5pdjgaD09HRSe53CR+ll3ycv\n",
       "wqU257oq16+VNAeI6+bXXGIvk5Mj+y2OTxeo7w5QIhmEe4bpPU8xSS8S0IdhN+cyuPPEZ9644NlL\n",
       "mbykdxY8V7oK4hixYq1/d26fRWdQpgkYBjugRdveKG2KBwZLK7aJhvIJU1HWx9gH2v6iLj++yH14\n",
       "Ubp+q6173HrrzI6vRdXN4PUREvi7XVIZl3fdpTOuZm5eddQR6cO6kvbNckwbLchDTehm8+YdlcTC\n",
       "7gneialupjIbiw4kBugyANv3WVD3BIhUdEWTqsRZVuegvEmRtq1/A8KWHt+k6zBxCbbpjDTh7yYf\n",
       "P9uIgBxUfBH2tJgrPPcam+THABi9O8pNbXJXHVzPh3epVn1jI2NiGn0+GkmIsAbPZnC1HlMqGDEF\n",
       "mZajmsuZMz2gH7a52XljXHjhYTyabdJfENczwM0tg3IVppSXpFJ5UIfRUOIEvLF5mpiegmk8Kpi9\n",
       "thvPdcyjimXmr8kCHjgjjpWg7py/EEvEIm7G2Ekfnii/DgRZDfRFbdw4kd86HIkFzGYoFLk5tM6B\n",
       "rnSkFrM6jq0kq0Y/2wcs1TZOgTvCs2yvS3ciJgAq2jD/7QTpXIbriti6jWWixLYPbalZXc+nlcWQ\n",
       "hwsrF/p/3XtFhnvF29am5A4LRHqjPwuQ5rU6PTD+aZtM/c9z4TOXbBh719WBoL4Oj/NbpWkSSV0F\n",
       "Uxsp0TNfd0JqA1EyiQtq2qpc6p9SkdMA2DoYWoPnVGvp0tsb5+innMrwPup2lCZr/uf24CM8TghJ\n",
       "0XTqgPpdMYNRWQqL9fKjNZbWresix8+vts7zpEEUG5a4yYCsWQDvHKfIB+co0mVEnq/YHr6w/wPh\n",
       "nI9VgAZ2nt5q9laP5S5tt7+02aIvdS8ttXBJdpdfGwNAs2RRovkGEa8rTalC2MrXnZPHY2YMGFPZ\n",
       "KkS+iovl+6pX+8P7+vwMTQd/4p3YTmJg1N4cccPbMyEjD8t1svbETBmSbB0VzsGo7nlnw+LE0PpU\n",
       "A2qgCWC9ugtrkxvf4mIuwLGjTO5Kx19uwI/EPEBod1XMvBN3n5zYMeCEr08zWa44oRkIj86DL8N+\n",
       "HUdp8oFZHStF7uWQKUPE6GSsSrC90iQoYT2rHffisP0dzWJIScKFV+L9uel4AhcZAS1jYyRu4sQo\n",
       "tF7BlCl/7ubuTsE7hgxeKzrG68WPjYXQJEAgmja+IRz3dNO8atgJVZLCCZCkfjeIRajUn2VpZSJa\n",
       "WdNwIR7Y1x99k8g2/fCYqGVaGjqIuWrru49ckwLEjO50nkb54TULKXfOCaWtucdhBAJNnRLubIhI\n",
       "5+VtpWv/14HoeIAkkvO/zynjLmYHTdf+nuzp5TzTSoOELKMnwtETNOsWhwCVsMHJSSILBw2E8vJy\n",
       "hFH3ACixtVjb8zXVUHaEMrPPi6Fk8Eq62RiUcAPFJ5abGqhXFOHDNwdk1UMhNL+qbNCZY6RRdEaj\n",
       "bkX2oOa56fvkNieBYUF8fhKnmfJE57z/Nue5FLKGTEDX4hIM3E2Svpnn2T00xIWeO0v7ojlu7hRb\n",
       "H8nwiZhKx+E/aUMQKoWCxXMQrYQ+UKrReif4MwvpGSRldKl8LtHPf/GDzNfAbwppZVslZ4ajNz7n\n",
       "isIIwIuZ+aj4PgIKFBfXvmsS4W257DPFJrylESR8hALGlTtX8BrdE9EyRZUCiCnVsnx3siwzfnJo\n",
       "6qnH9dR7diTOhhXXS7svSCRHXQ2XUthsnBGZgZsbh2qYw1+ms2GHkWXqtTKNzjEqlCoaavj7kh+6\n",
       "RTMMb6AnXLN3kQK9Rw21g7VklOS82u7AqB01hQBbyDvPwlah71rf8tbvpR/KtQ++uwwV78AIsBzb\n",
       "7j63zkiQEMPaHcM5XpCmUGCU81QklaEc1tjlh/JsVYQsWhhCTVDFS334GN3FM812xk0bvGxnez+1\n",
       "RbKjxxXQ1ZM4i7uB2sOVgNq+cbEeBdPp4TL7BsE+C6rSaCAg/5zjE0nxHLtmC84bPyDBVUQIpnGB\n",
       "Pz0XIA/Yf/Es5wRGLtbUcWXScZ6Pb1jbEbIR1FelPsGR3UWBX5a9jWsB/VT3WB9R/KnU5ocbpQto\n",
       "Hfkl3cgYcuRGpU9uL2gGYE/IuLVd257A/zbIol1/arJQuN98CdH4wHuDp/ovnlRVdp0YQ9mBMjbD\n",
       "qZ7LNSgu90hM9sdZZLTxvLPgAsOuYJW19tQ3WzneYELd92u9Eoh0Ke7JS1KoRPfqPM0zIJIzh5Oz\n",
       "7sq47R5wg6MXgeefIWgjQITPewRcWWoBieN8bC7V8S87wMhdySKPi8nXUL45A+qRwQv1YgcRNwe9\n",
       "rLWf1FJv0Nkb71/JBU20uQ/5LdClCoWq2cuz/uNrQBh5YubJLLAIYYelki1uhpJVAeXhn1SnGkDV\n",
       "30+LTI0Ba4nHoyrnbPEP74ewFvhF4/KKm6nI7a8ZjSvhMsQghc+gKj92neaqVNBPQZkiiIatGTKm\n",
       "aIOcKJIki7ww//52T5Gn6nPSDIjrxuJaAERoZCfDLNSRa57swffsv/Hs//1nf+18v0cDEeY+VsF5\n",
       "zXfAGNvsYmpwcWXD64+p9HsadirfjevROZVwJU6ldZY6w+jNIrr0iLDFuuq4Y1ltyejfSNUU6McT\n",
       "z2zntDGpoe67bnRHa8f0SrI++C3o+BVLGtyPEp4DGX6EEQQGN7dZ8BN6ijnPuAHeW0idymg5DGaG\n",
       "6AIMJJ1fnnIChVfB/pvBGIeY6Tn1KwWdbcI+AvfXTuBmhbX9LPWhuIz6/D6LJa3+u1j3Ty4rBA0H\n",
       "Zg5vklL5dYH5nHsLU8KXL7FAVuOCnhRre38KY2OpEqkmZWEXNLSLvnE36Jb7SSxdc9CK5a0m6cJq\n",
       "zqsB/bOHNKny9l6yZHSYkC9NXPFy5l97Ql3LCNOP/vBjAlUf0nJ8hs1747/96Hl/DlcsEZxqXUfP\n",
       "WxfObZYmq/R0/dYj8j5wi5Zf5i14HSiZGIKwFK6RU6juNUdyTeigqKG0eBP7UJvaQEdWXqg+bWjF\n",
       "XiffU7mW/d5dZznFdwHXd7OQYXZwEmQrln4yXqCGGVrNPE/nQ/npQKd4iSYvoEbPNjjYexv2ueDT\n",
       "9EpE5T7WZxcE5U4vrOWAOzEWQOtYMi7X0YXu49RtrBdHPBuasFv+7c+vsFVQ0uYao7HuP/ZDs4LT\n",
       "HKPs8FUvcGIl+UeeDSd0lPbqExpBvICYlD1Usd3ur4EtULVRU2O4JBz9BWs/2OwIEAEZBwOlwaW/\n",
       "RPoQCBpjXoVhVTTZyejmmx+oSupi055SD3//RcrLpbeE+8rYyNw0vFn7g3s9BkM++b//l/tzNY8/\n",
       "DxS5JqynN7KuzWEzHlOyLM93qWi9uGgk3ZnoTivayiEbuyczHAZgDFXRz+ME7574I8dbwEBQuIq9\n",
       "vLyoqMqe33lQXvbh5wt/6MVVfr6/hPiWvln03ZCFZ2+BsfIVKTLwQY7bhujCa6UMuN/cQ2rztf3/\n",
       "+4QBFTZEJXUtq8cS+n7StzJRMaVei4bKEBzO21hwjyPbXHWz1nigx8gdtqgY2/fgl9Bx4R5grQdm\n",
       "+O7MRTYryCMwcFXewVicsdaqpPCT8CLQkDnIUvTxWStGEuJ/LMxcmMtWuB+r1yEEaUSboAAAAwAY\n",
       "IADslFEAAAI9QZoibEO//qmWF4qVAPnYBRy5FSP57DgI7JBu3yJgLrBlEJLVJtYf8wYidbKc9WnO\n",
       "KPlfHxHOtpre7f9l+UYRv7/6CZyiax31P6TYiS3Mubto2fbWaXY2hOytnXFD9CaxjXX7nAG1z1Lz\n",
       "RvITnwrm6qrr72AksrIMbLMsE9j29H6dCxHHQRE3Pyu9QxfMumkGT2fTtut2PQ2D7cP/d7oI/9sS\n",
       "IzgMM48TEvBPuPNsaagC9oAksbFllgz5ZZGGy45bpKwsKqZzG80LIZM7wItzCiCRvFHeSzsAulAU\n",
       "ptAkkdtgFCnpjnPJ2tqu+ZzfLby/k1wdcLmFBCnh46cZY2x8uMwDcmlVTUqdmgH1YPrRl4TXYmYf\n",
       "I2JbDG6VF76KPZw/6Vr3fGkPBhc0x7PZeFw90Ww5rXxQ5FVQKxKdch4v/h5gd+5tSTwbK+la0br5\n",
       "7BqbDUNkT+8TrKA211/RGqbHQ91u8j37e2EerDvqXLmP73yE/zcsnaxGFa43PcE00EmJEI4Svd1u\n",
       "w4gVDgReMulJtIWDNneTjgunG6x5l3Q1cy/JGjqbQTfc/YbwWDzJeBLBJfwyA58t72T933JjY1Fq\n",
       "uOJ0bOkOO0CtLxdS4fVhxJsrk4Cxjfj7z8FdJavmEfwPxvYJaG5vTDax+dlc2tHpMFou9Q4WA83J\n",
       "iEBCqQcMwcV8vw3zR2+VujCWsLwZRFS1vfPMBPW62Zl0IVF71AmMBbVArAlT40aDhRGfkzmyJlKZ\n",
       "8xECgnPV6l8Y2qWAAAAAzQGeQXkK/wPQbTLCbOyVNylvjF8+gfIROvTct6VcHCzPjko2d/OlqAD9\n",
       "tdhqWL8cB2rCTNORO3eF9B3Gns4/4iLWsRkXazaj99uDDGXjY88S1UxMV2iAcxFXyO7Hm6Fq1mfc\n",
       "iGc3cTMThOtq/NrH4BH/k8AISGd8nThHusk9L1M6nliIVynLLVyx7N1CGiFtddvRjwzx8SxXdQiq\n",
       "pg7WAEwnOnm0Z02rYH6aMOKzEpkaL/dhO01dwG3LfhVQMT2T2OSvcG0Ts21pjBMzAkMAAAGIQZpF\n",
       "PCGTKYQ7//6plhPsjrQXaHWa1ysfvmIbH7nYFyzIHVANLKfGCT3f6ujbT+k4wS/q7dzC0GWK3rqF\n",
       "TWWLxb7VddWQIngpge/79Z6xJnPR0OXA6nshed4lAG9T/lwW8yiu26w/xtVtbcj8dHfZCzY6GqBa\n",
       "6BeBW8Pbi7bPmCq9WUDvRxt6R7MHV81ioc0N4vEi8nAmhkXT1Zxv2q2DOKLaJsA1gz0Exqkdl9ra\n",
       "GtzUTpf4bAJV/RYySHfWVK2/ic+t6k83QotvubG9XxS1Mte+vaFT/A/JLsvEP9OgybD7QcaWNCHl\n",
       "2P74G852vDvDsn3WKYVE/RzrS9VnfYt1BByuURXL1w2n7lxDL3Umfa8JBTrViPxCTVVItpVApwOU\n",
       "szKLvJPxxliCNvXQYgNNkpBFmZnDH/nnXQX0nZ5rXDEHNiK3GFpQKYzAFlHiasYewQ85pFg3mILQ\n",
       "JSxu2gAtTwWPFKi3ruf4740L0oKIoLcEhrx7vprGWDgmlConF6eZ6DC7Pc1wg4AAAADxQZ5jalPC\n",
       "/wLFWhHI807gg5W39mUZr/RxuD/k0aszP4dVvi/+i9YATqq8jO+qRonhDtM5aHgaM6oTF12kzBbC\n",
       "2lIRDQau+3unYIA3B1icqVq1lPMfet4kHANXz7Plv0+Sc+Ryn9ms/1MT4NrWHY/0ul7cwcxUBTyJ\n",
       "hR6jse0sKFGllKJwY4Fh/MPW1PF/YddWLplqJruUFYx1Ev/g/lTzSlwsIzekR/gCE5v9C/GojxnM\n",
       "BZV0IrTTVCZg6iFqTTbXF3k59imivwANkByFpLMtIK1cDA+DHgGkTSxGpj6fuermqvUW7Ywr1IQv\n",
       "rbsnqAqhXwAAALsBnoRqQr8Cg1RyF5KyL2Nx2rUwpGXFWN+p02+mFBPwAftr0N+fFN1MWUXF9z5n\n",
       "IMQSa4fjLtaVlnLDQhGRKombp/UMzfXotPrXEbAqSL+MImJ+icEdJMMbtLWH/MgcQ/4QiPN8H1v8\n",
       "uFXu/u0TsAunWNoAdvaGTq0Abzmxo0+ElLUu3Oym5u5YAqxP69FabKoYrotHQOOxttLd/inrw9zk\n",
       "f7eCJAWOjQ9+aM+BSEODhI70K+Rg1vDC6AzJAAABNEGaiEmoQWiZTAh///6plhCcxNgmZqnvnjEg\n",
       "QvAjb6InI5DgxgA5lWHB4+oi58znORzJuuqzR8ZFRGvt5RNmtjYANRyWggS2Ns2kW/qblqmBX8L4\n",
       "fnKoHRuJ5uCbyjWx12b7RPbtF/lVEEmaIAnwcqefTkdluwwo+AmKrTteei0nKnjxsRQ2UtbkMGGQ\n",
       "lxlt0rbp7KnL0IEfrWmD0cVJPkfv//v1j+8dNsmBVPqw2DmklI8j46TzsSZRnX04gUZPT+M4JCkS\n",
       "RcvUx4AEI/JW9MtzX8a+GsZUjGw+5zItLHDqOE8z6T5wTKRLdvJ6yXQNbBnPuBlOPT4BE5f8i+vR\n",
       "4cjy/cS6ZabbOi0jJiAfuYJ3+STlLREZ4IoIWIsQJJGaCJSt265oo7aS/XN/PEXCLz5FQOFBAAAA\n",
       "rkGepkURLC//Ap4jbqC/k+mocP5dhMnJRv2K+j6kZU5hrwAftuwUy+g4zWRKPZmUw1+A/zbZ3hgm\n",
       "C6bXVJN5aUxFIfI4qwiY2KYjax8wAD0uiuklfwooMLBDUaVVLqHRa/FDwWbYMEP7GyjpScEa91St\n",
       "Jtb66lb7fdGVd9vL3iuYwPOLemlbYcrCU60Bwk9t2hSYPa3CvzguA9wLNNnLJ9DbKkxXSSIf0wL3\n",
       "dbnRgQAAAHMBnsdqQr8CkWBaYGn5gadNQ0gDbjr+yo2s3mGBgBCmWdbowtlHPkOQ4//5/KjychNF\n",
       "9vhA7FK3mK1SGd1wT5S6/VkgW/IhjuuKSUJJ6kEb/n7bTNvscNHRLuDph8VvpxrKvj4/XUx20eUr\n",
       "+C1wLdFq2IfOAAAA00GazEmoQWyZTAh3//6plhCcjsHIN9G00GIsSgAE/JSCkzrCk/TiLBR/0tYl\n",
       "NyEv5cSYF+/irJ7bN6mrWjVybdSHIrP9S5AaCk5MRDwsrk+udvitwN0IOQahU3q5lkOs0CMOnvKp\n",
       "RUa+aWkdjmpEUyvnpteFUJ86clPEKo8i3GXVESWle7RcyBSgeVJQawCheklzix5TeHPFR6xqyyi2\n",
       "ihlYMTa3RelcFADYCdJRmbrM5od6OPQnXCt2BqPFgAmiSRTHMQSwVONqX2Ax8HO8UPhjbkgAAAC1\n",
       "QZ7qRRUsM/8BgcNjKE9vgLeS2EX9m5+Q2iQNM1YTuMfPXbSKTKQ+rsrbTdHABzRu52Sp7HEsqWjV\n",
       "3CZf/ibAAj5oOxYNu2FPgvIn73WXt5PW+BrNtFPVklpD//pGlokS7Vtgo942kWOPGaJJFiZ7ck7I\n",
       "9hIi6jXJtNVx5OdUSleaF8DrcD7mT/zMZsVOgY9iD2YNUECEtAarwxyYE3LssGQ8jUeQcrw/aDuP\n",
       "cKsJfNaI0mkEnQAAAJgBnwl0Qr8Cj9FJcZr4ulNiYIuGBBFb6FbZOJ6WU3PkAG0DQWZeDP4fdb+U\n",
       "pCnONVJTaDfzDaf+mVDX6/PY5odbCg43vKcypwB9sZFaY2sPoy8EQgGlfaBvGmLH3R5ozXYVYfnJ\n",
       "5DydSzr7eoosiwBeiVhQOj4+Y8+hBcvH8z6ZQN3JGKZIgk3cZQg2Lu/g8e3nfnCOBysETAAAAIgB\n",
       "nwtqQr8CkWD5vWhHeHWlmqsOwg09h+1LSA/iqAEIRHQ5/GX1D19//8CPfYa4AEHn1Z8F4P4vun+0\n",
       "y+1OQGchluR4j2HzHX2nl3IrpKdkW64KtXA8tmZZyfWMpK/JdHgmouXY7XKVK0DrQH03TD69Abiw\n",
       "Ym8Ufx35Jzywx4nrqkVmd04LYCGgAAAA4UGbD0moQWyZTAh///6plgAANRaTy7Qm86k5f6iogVgB\n",
       "NNqpj05BuFzCky6GzoXwiqWBE4Bs56Fmmnuooz2zqdJF0uUGOYb4OXT8usN4r5UC4toq9bpU+gXP\n",
       "cpyyxkbgsjvv1k73WwMBb+qCYqZsKLDJ//IbXjlnnSNenv8+cMmZwgcUIsXHOrECfrOLHPY8NkfC\n",
       "sXjVDW74anCUNaSye5UQLZ3zXfIeH+uRnjhGVg51Y6ETR89LlrBoc1iQ7yG8jc4MWXZJYmVZHAly\n",
       "ZjPIhlyr+P/4Aa2l798MCEz5V70VgQAAAIpBny1FFSwv/wICbghiQrV4geNPlE/EAUjxzwXuh5wB\n",
       "gxN8FRgAJ1lMCnzlWOFg92q1+dZWG3qjK8qvRElVVmvK3ZzDE8g2lxOBcx+MiKWIXUkNlIcjf73+\n",
       "388PcxPATgGQPjpGfGgSY5LhL8P/Ck3jaI9vBkIjI1BA0zCW6kp9ihn26MdCxxbzCFkAAABJAZ9O\n",
       "akK/ApFg+b1oR3h1pZqrDsINPYfwJucnc+srFELdsKWSlGEr2rPzlIC6+EjAa5zDTwCkPh95uGfi\n",
       "FbSjFt7EZwu8W3o7YQAAALNBm1NJqEFsmUwId//+qZYAADUQamtYibojKH7gAuq6AX2KZYEBwLtr\n",
       "6g0iaJRj3+ZBKCed8c3R9nqORQTNUxbz+Q2Kk5aBT9BqQ0S/5AmtGqEEmT+zchkH8eFJiH8M8q7q\n",
       "nCrhV5OprIvZrIH7Nu/ZeIqOuJwSfIKqRqdvJzP3gCAruWLI2blR+yZ5onbYzqjYpiPrqeD0KSOd\n",
       "j4PxxDEWsv037WOk0BLQfXMddbRbQ+OKnQAAAHdBn3FFFSwz/wGBw2Montc5MLjT3dMwwFGMefB3\n",
       "HlcOEe5dhuVm5cAh7UM1D9ywAF5t9dy2qBSvGDZQqTbQvpj1uzBt8vGXgKqUgXP4EXyArXgAvkfl\n",
       "mGjcXEewvJ0zrf/3/Rw1tOTR/khCUrPmg5oaGFEvimwZcAAAAFcBn5B0Qr8Cj9HnRKRG8OnqHj/A\n",
       "O/Axm2pUQg08GVmQMOkd2KWYPfUx8IZDM9UOIZO/s6Vu+a/udNm27LJpAhAAH0s0//jCGNgq0rmC\n",
       "b8FgUpvAYmhoPKEAAABgAZ+SakK/ApFg+b1oR3h1pZqrDsINPYftSkVXKb4SkZ21MI0En5ZLJFrf\n",
       "7lHzUb5XebD6f4OajgdwAh8MjGgWSpcnMYay9SSSKSEPQSS6sRc+zm3UqK91kdXbXr0YHdbIAAAA\n",
       "2EGblkmoQWyZTAh3//6plgAANRC8l3lvAAFCBWUfUupXZvQo6CaGXFK7m+CrRy0icK547MEQjRoR\n",
       "MYx/YQDPCllanwDDn2cdC5WH3LZvEPUX6P4FvmCHOGEZjGtm1q7qo0lPO5P9OPWV7kLOY9kChG2V\n",
       "HMEGjj3zNSy6iu/WF9QXxkk8byyQRWem5KgP3o2M2fiughPwSe5TgoEIhV+KxKtM55l3PlMN1zNf\n",
       "Haqw3pjyCHE2fESiLpd7ji5oGYoJAV6QvADrlYhT1LrSqnPMKfhMOL+YCOdb8AAAAJhBn7RFFSwv\n",
       "/wICbghiQrV4geNPlE/EAUjxzwXuh5wBRrh2K7xHDdMA4bmw4qT79AAvrn6fx1k2LtBKfL//j+Fu\n",
       "GfLVYI7gHUBXFpV8wkyWToqBlYos1YET02b1pjHfRXOnp/qqnm0jg90qiqzeUZm7jj8+wBRnCZkU\n",
       "Te/pDj78mws1nUkxa4+y9KeKg73Ufmn2/IVdIXSAgQAAAGABn9VqQr8CkWD5vWhHeHWlmqsOwg09\n",
       "h/BU8RoLztxLBmQaDgSuS4Li9A0n8kDkz1lJsiIev4YACdmBsfVHoQkosuPxEbaEce//4X7S8BZt\n",
       "mA9hQZKhFsw8oaNzQlOGXEAAAACzQZvaSahBbJlMCHf//qmWAAA1FpPVACJxUj1TrYWet0AF1XQC\n",
       "+5uhf+70g4YLJde0/+Dgp+VrO0DwloDnSd/n4xN4d34fKXnOm7h/3//OywrGLwfbGL9Y7nSyIFSe\n",
       "fby7IGDrfMaXZ8oJfx0kqmTdujDfnWCQVVo/srXl+HfuDCFbSnanmbbIyo3TspDMAPP3mBAMOxsC\n",
       "B10JZbkaziqZoMGWsQZgJ6gV0zlaHzLcGrzcb20AAACWQZ/4RRUsM/8BgcNjKJ7XOTC4093TMMBR\n",
       "jHnwdx5XED5JgnAzjme697c5XWbHjOKQ7ua20AD91W16VTKI6LmIMZ3p0dOI547IrCjO4CDsn1ll\n",
       "vx9GQ60nTZ/URzw1fRhtTsE4J//McYeXNaXKHitiIXbunC8tuQjB/Y7ZH/7XYG0n7CFnD3vGICnB\n",
       "zyJVaFXJeF2BWOWBAAAAcgGeF3RCvwKP0edEpEbw6eoeP8A78DGbhb5y+Uz0K4HHhGkBMAsNAATn\n",
       "hTXRe4yT57D75fMyIOgt18C14DCzEgD090tl9KC2NLfVsrMHAx7PMKOgS77mqrpxIyp4XbJgnLXI\n",
       "bO/2uPvUu7NyKd2pVvYDmgAAAG4BnhlqQr8CkWD5vWhHeHWlmqsOwg09h+BIB42uiPB763GvyFwA\n",
       "lkYpzpeBdLrvKRlXrp3T0lGH2EQZ63kFZ8ibqmfc3WNRkLInxUlvOqbs+6XBWkHdVbEPrgiv4Lyt\n",
       "hj3Im0MfrTMclsAldl+LmQAAAH1BmhtJqEFsmUwId//+qZYAADUWr8UrD2cagDAA61Xk+bsGoRyn\n",
       "BqSLx8dhdlqRjX/4IepxIiyKcsY6c/RyLLpJZB2YFtlP0aekGfj418tNB40oslrReiCS2g8OESXQ\n",
       "u+Ljer/4FgjTNthyXed2J98cNOJvWAfdwMIeZocC6gAAAKRBmj5J4QpSZTAh3/6plgAANRC8l2ZG\n",
       "6l2N/U7//YqAHGQiVyIiyXgFMbH7vnw8K9oAlZAhHffzcO+PIouNSG3gIFVVPFQ3kld5Roqg9uJd\n",
       "HS2sLb4HYm4sSyj4l4BrhtBanUxrOL+WMTiMjbLVPO65XmDfEp3izzN2tSp9Kux6dZUj0RREZ6f7\n",
       "hCo7DCy30xehvVOK+j562YLpfePf1XsUWPIqnQAAAKBBnlxFNEwv/wICK1Tiuiq8JwKVW3fiAHvc\n",
       "k8FYdEc8TZyJB/XEAH8cIWhR7rO2tl/yP/4adRK1qfzpMseROdauYZAexZsInwXmqdN+O8DLZAxT\n",
       "amVHeW1dRyoXcQa+ZuZlP2iDwzLrdLGp/1A78vn5JneoElU43Ax8DTtyzM89Ln3UzJP+2fmgfD03\n",
       "JILRfr7D/7DaN2BhJ/oT31xf+Iu5AAAAZAGefWpCvwKRYPm9aEd4daWaqw7CDV5lYe4dzk99dK8u\n",
       "LnHyA4eVAABqUV5P2WI61ThtfMcBhNeIM16pEqMmyGQUNxjPMvgwQZb6e9CFYYhFqWDTzBqxSfz2\n",
       "GvH03a7dNow3ndAAAACzQZphSahBaJlMCHf//qmWAAA1ELyXZkc7JXXk1O//2KgBLJ5gYe9grTL1\n",
       "07C6vW8b4hn8QF1lizkeoWgUSWgRsM/KVvoX4xd6f7Ld1eC6pborWSbp+UPcjx5wHqCf9cQCk0Bq\n",
       "hdC7M8+UpLX8QFJrZOrif//1KkUQJ5LOtmjTUtJacVOO18cjin6K+oO1GBTHBpBB+DriHfFNpC1v\n",
       "tVnBi9FX1MB6EF6u9Inlf0Du+hfM1ucAAACZQZ6fRREsL/8CAm4IYkK1eIHjT5RPxAFI8c8F8FVq\n",
       "BX4ulLp5w18QASu9NN6gEBbDT4PXxyjVJ1p0NSm+1rb0OXxp+m/CxVcQJuon8/hYWTOvlCRW4eKK\n",
       "0xka/ylUYrtlVTVlYl8T4XL14OhZFxXxy42aqk5eKgB/NW2QdS+3mW+EpxHNUk8VCficTO6uhHX5\n",
       "/8A5lywaaPaBAAAAUgGeoGpCvwKRYPm9aEd4daWaqw7CDV5lYe4dmzhoOaMG7IkxZ2BmSiKeI4dx\n",
       "DYnX+J9kdOGaG47yV5RwO0QAfSzT/+GO1wgY6imzdlfKCEqvZSAAAACkQZqkSahBbJlMCHf//qmW\n",
       "AAA1ELyXZNWb3WlrZOjtb+ErnaACH6StpGw+qmEljNRtwyzTjwvZoXSprsRNp+38lr3LxbCTZ/f+\n",
       "uxg2P5XSJk9LbRJxpU15IqtMQcdpW+3ZByiSvRC9X8YPqdNaO3FPV/9oQ0I7x5z0jhuAip+2Gw+m\n",
       "ptE2HTQPQwDZzvvMZ+cEM9CT0bNsRq3O8ECA++oJpsQpaIkAAAByQZ7CRRUsL/8CAm4IYkK1eIHj\n",
       "T5RPxAFI8c8F8FVqBX4zMsDY4XwXm6wATrRcJjiW1Uc4MF+/7YmQ8TJ3bYc6iJ5d4uxdE6giHl/i\n",
       "9VrkPmjerWoXmztW60CEi0VCwLvpf3rgMLBLdDyawJkXpYePTkxAAAAAVwGe42pCvwKRYPm9aEd4\n",
       "daWaqw7CDV5lYe4d3z43BqvxbAaCMpOAWVwG85ZOjUCvHbKPI4AEF5lqpqgTdxl7+UBbdfMDY+a/\n",
       "irNVQlM2XKyGw/7gPHfmtQAAAItBmuZJqEFsmUwUTDv//qmWAAAz0LyXZLD1Ia1lL/4Su4Kvg4xb\n",
       "ctqEg35gizJbXlsBzy7aSbtom2O0uO2bDrALycI3hu74GD0UA/+CVg39Sy2NoWMQ6mgS8C/qhR5s\n",
       "AXJAbeqQyocPbYdngKdqGVDCCSdslTVdrJmxaaMxZXI0dN8vYPVR0P7XmQObAAAAXQGfBWpCvwKS\n",
       "M4e6bYp3h1kWPHpmyE8shNjc3xzVPfcOM1D4+BpxWGnGwC39Uq+4+4MkYcZYNcR+iV9U+gAJpDKT\n",
       "C2byIRRIMHTDeZHd+7yaXIwbf4lW4IU6LfFGQQAAAIVBmwdJ4QpSZTAh//6plgAANRavsbuXuLIi\n",
       "cfQAVJ6qwT868DP5Lv9+v8QGgN76b/1DiWmc0QCrBzVGqGFMVQRE7gtecBRH6i0/b1pVH3z0Z+Oi\n",
       "mCC2SUs704BvTtbTD+OaX38CwbDknsBFG9I8/R5KORqKiJmpSPZC+wNfabbdB5R2t11RAAAAikGb\n",
       "K0nhDomUwIf//qmWAAA1EfEIHNJ7iORepX3NU/5WgAvmqdopfsp88tvGq3ExFoBQaqfNb9p/OZI6\n",
       "Vwj4wI1jk0adN2LdnOkv7rmR7HaBA9G/1Y0fXwuRtE1rxSWdfBMs+lB2ChvCPZGqU8xgSqdv5EB8\n",
       "wDC0+dC3WRGjWBVTuuyFB+/o3tMvygAAAH5Bn0lFETwz/wGBm90NksxhYu7tUz/xNBzlI/xxQAMY\n",
       "PtG81gj1MoxSHoi0AB2h9m09o2pG9CTnk5UgoZ4Tx9l4tc3stYkAAOYu8vpxKC60pcuAClqeGJvv\n",
       "DeO8gf+5zknd2tG1K/LFd9wi/pv7aU3Fowln8SxihH8uSgSp5DQAAABlAZ9odEK/Ao/R50SkRvDp\n",
       "6h4/wDvw5wgTxF6lSlHbABEC7vTo8ov1K5e7BlO9a7Y6FFjXBvVqNhDBW0wYk6KDUzGmJEeSM95Y\n",
       "XFkSsCg1Eu4Njn8jJYdX3xIEKxQ6fOuoXUJmBm0AAABdAZ9qakK/ApFg+b1oR3h1pZqrDsINXmVh\n",
       "7f+wNSuQANqNKiHi4xGjSt+kd/zcScIQB/BLqEE12mJDV4hJxMN27zbXrwfbTjHlRIwL+O/8EiVz\n",
       "Nu4Pw9WU53S+WiH4AAAAmEGbb0moQWiZTAh3//6plgAANRC8l2TVnrY3D4dv2aAE0yS1OGt5Kcr9\n",
       "eMy4X7UDsXVPf2CX++7IiV6Iy688+sL9i3pvPoBQ3MveTq0DE8f+RqCip3mfB8t83NFjiyUt7+xl\n",
       "29ZJk6tEh1fWfs8QQa0fHI1haO4bn5lST+z0VfgcyT25nhXoyhaKf5Q1+F3T7NweHzbY0HGoAAAA\n",
       "c0GfjUURLDP/AYHDYyie1zkwuNPd0zDAUYx58HeQDvEMPAGnb9++4AKjl+mAcKlFqUDAc//fqyf9\n",
       "KTZ9NONZXzVH0RSv+VwHRNmYLo70+EBLQ81T/fNoQ1T2A6ksg0gcZTV0/4JD/pz8mS4Ct0Sl78iw\n",
       "N6EAAABEAZ+sdEK/Ao/R50SkRvDp6h4/wDvw5wgUFIwYnLjRtByJJkzRi14r9YAUm2mEq6AAEPhk\n",
       "Y0DJGjiahTDWiRxDfokA0IEAAABLAZ+uakK/ApFg+b1oR3h1pZqrDsINXmVh3ccSl1wAQ5YqAOAj\n",
       "+E+cZRkRN8xnzqTbC6c7t3vc2YIrSkla2OS0oTYeUx2QxBVgvgY9AAAAr0GbskmoQWyZTAh3//6p\n",
       "lgAANRC8l2TVntjKik/v4R0CAEKfDSuIHJoSEB84wEfpxNQirbtHKkcAFciF7eyaqRpRZK8UU68l\n",
       "Ef/7t3vLaKrGJg2AwJ+1B3uZZubx6jlUxg7lUfZ2fRUKYgW2iyEa31ITC83ew9/vZd2feVlw+sna\n",
       "x3PeTdxYOr7XzS5gfieJ3pImIz0lelMu011W8z1UZIPHY2khRyqmnaEk0mKct8gAAABMQZ/QRRUs\n",
       "L/8CAm4IYkK1eIHjT5RPxAFI8c8F8FVqBX5m4bTh8Zlw0RLqqUQwxzXm8tFx8j7qs90yefZJH1+F\n",
       "Qq5SI8oWkXyiXITNgAAAAEIBn/FqQr8CkWD5vWhHeHWlmqsOwg1eZWHuAlaqW2fD9ffX0JjI7/GR\n",
       "9R5ZDCrJmAB+kM74Lk04HA6Jes1pI0sn18EAAAB6QZv1SahBbJlMCH///qmWAAA1EfEIHNsqLJdf\n",
       "4DnnIQAhOqdopfsoylgFPYJP/wJS3I6e5U20XA0yq7leLFPNkpWq+YyUr/PPcvZrPCxSZ+hAYbaq\n",
       "XkizTZDns2l0O/LLuT9tq57C5W/M4coBQCncEUov0EsGgSbIXqwAAABNQZ4TRRUsL/8CAm4IYkK1\n",
       "eIHjT5RPxAFI8c8F8FVqBX4zHTULh5RQ+IGuir/VcpaUCmKWwYCDKR+c/Fakotht+/wr8mEd6wWH\n",
       "ZGPAZ0AAAAA7AZ40akK/ApFg+b1oR3h1pZqrDsINXmVh7FCUbG5dl2+Sup9tx6nL5BX/p8VLNj3f\n",
       "/tZurTeifIb7bCEAAADTQZo5SahBbJlMCHf//qmWAAA2Y+AwO0rKHS2MSv7cpex1ACaa71TYsQw6\n",
       "IngqJ6IJVQgSjmzjpGzmE/Uw9Rj7qBAExKVX/w68dTykRO1an8Slc0PNee1HfxfqVOYy64XP4Bm+\n",
       "IkehrBNoGyWpNqGeE6QPNXV8ib3Jbfi4OQAgFnTuovWptPkgIO8VKTK5Adb0p8ygQroEd1Sp2k9d\n",
       "q8LgNnbjjc+s0HooYUjTyU9CLYB1lqSQbP4AirVfsVM+Pb9Afm/YNl421HQodVV2QNw0ZGpRGAAA\n",
       "AF1BnldFFSwz/wGBw2Montc5MLjT3dMwwFGMefB3kA7xIUCMxnkd/WHQNUr1HQ1eSgpuvLZg76UG\n",
       "KqJA7LZRbc2TUDkzwQkbjN1b6qGxEjbd985m2qe44E/7GB2ALGEAAAA4AZ52dEK/Ao/R50SkRvDp\n",
       "6h4/wDvw5wgTcarRD8dx2kJ1IFdNXewssMBHWsWEtpVM7IkGgNdxr2EAAAA7AZ54akK/ApFg+b1o\n",
       "R3h1pZqrDsINXmVh9Pp+DZY/BlAkWWBpwz01taCJmjsjMN1yJQXrtEPOD57NO7MAAADCQZp9SahB\n",
       "bJlMCHf//qmWAAA1ELzlgoAfgNbJNCwmI8PrZ6MXw0riB2UDvP+joy8dOCheqeDbAQpa+tJF0Blz\n",
       "TMJLHnj094sdttWFBqlsJfksIoWncWWFgr/8pq2XOSJN4plXgfN6VBjVNyHJCtVLiPm4CcsW5LTI\n",
       "9gcy1VHk8epmjDkOLGuDdQbS4MYBl+5l5+E1KM9dxrs1J8/uFs3uY0E3V6QVXArixNWZazfqdQTp\n",
       "fX3u46ZkXsYkww6MNmLgU4EAAAC1QZ6bRRUsM/8BgcNjKJ7XOTC4093TMMBRjHnwd5AO8QpAwEkT\n",
       "NxunleUaypOxQAKkhQ4tttwZBswOUBdy7/uN4IMzXcLRC56so3ylN6zOcF79cNJgeRjt05rPJMXk\n",
       "9c3+2h8RwbO6obzU5/blgfbX8uSzINVR9hXkgBlWoR+TRFb7ezkcugDr2z/BANomP21u2of9TBnw\n",
       "Lwk00Fhol7di+MQzVlgMQ8SPrUq0KgCv+NWU5xZqQAAAAE4Bnrp0Qr8Cj9HnRKRG8OnqHj/AO/Dn\n",
       "CBOCls56kLfmuoACDz9xmYwP9nPt7IaJxXt1jbybMpi/YR4R8Hmokje/GVnk3WVn1/IM0nAmZsUA\n",
       "AAByAZ68akK/ApFg+b1oR3h1pZqrDsINXmVh7h3daR+74gARB50djTHreNp5rkGvS9lHCJcZXmI5\n",
       "VNoWuMpWUiUxZjvLoFKdnUY1M3DN6mXROsudRFgioqDZgCp335OO0fkqwIvj050OvZe6bSl1xqf3\n",
       "2UNFAAAAnEGav0moQWyZTBRMO//+qZYAADZj4ErxZdsv54/QPZgAXVdALV1qGyR60ZuWbjTARr4b\n",
       "/AgRqyd/T6ufm5wFWE7a4CcIE6fuYqSjtgserW0BnJbX77A4AsJCjabjXpcQ1OFOJMo/qDbIejnk\n",
       "QKIbt4KUXo3GDhZP7BVq5gxxkl4uswENyglJyEdhN1RcyE67xpRuyXQwVwM2xJS5OgAAAHIBnt5q\n",
       "Qr8CkjOHum2Kd4dZFjx6ZshPLITY3N8iZSVFUquQAIg7qvP5wVN6fb145nlbDAwD1GXhNyiLnUKQ\n",
       "RnOFddRJxjHCXcmIc1ILMj3Gok9yMVPprGqxCde6ZEmYo89e/rhZgJco5wrvybH5hlF4UmoAAACz\n",
       "QZrASeEKUmUwIf/+qZYAADKR8UjMxVYABLLKDu48zuEPaAyC9n+dnmj/CVyuKEj+jzfzwdFLEKvS\n",
       "UnDC6CmUPrDxYUu5kPZFuRsHp4DWZpS1IV16glPaeGduN+hePWcqAmRU5iIcd40jOHKkPJU7Y4Cv\n",
       "6NZSaSXx7Ryr6/gH4+iMiQzJG2/KVmZwleHYgRBu08+OxZOsXUB6RPJpiddyMMEdWoJcLOtgrtt/\n",
       "gdoA+g8vjFEAAAC1QZrkSeEOiZTAh3/+qZYAADZj4CkVlbhEMzp1cKqO8AE60mL8+29nTFu1BoqI\n",
       "vjT+IP8Fayih9UU+W+w5zqX/CV0MYKYiKpUeobAffCDyW6sUP1ezRvZ/HiXyl0h8jIdrtgDSH5/3\n",
       "17JKxhsyX/6/jBYTsIOCGI3IFCg+dnLjnI9i7b/vip/25GDuhl8kEbZpX30qQsWywR4Axu6IISoO\n",
       "swxwB7F/JooUagVut1jj9rdBUktswAAAAJVBnwJFETwz/wGBm90NksxhYu7tUz/xNBzlI/xxQAMY\n",
       "RJGQVMNFEKJsAEPzAkeJvfmThllVr/+C8wS/DhIHErE7ZpzAm7mYoyrcUX2xXeBO3vpc27sowkYs\n",
       "Eqv6Uy3gn2LOsPDHSe+2AX126WbFqZFcS+OFoy5GqWqUX2g0TDXUTuWd/xX+jIqan/kzoxpjERul\n",
       "LTvGjQAAAEMBnyF0Qr8Cj9HnRKRG8OnqHj/AO/DnCBQTovCBsOod6uxlJcJr5Vn53TotKrnkCVtE\n",
       "khKKACWGR//hbZYezY+M4cM+AAAAQgGfI2pCvwKRYPm9aEd4daWaqw7CDV5lYfbzsa3cqy24LdFW\n",
       "JiGLVHOpHNZraMSADStZiprrSo8RhCchzJOc6Te3KQAAAKJBmydJqEFomUwIf//+qZYAADPR8Qgd\n",
       "Te5+PoAWwiJXfe4kFw7lFTseBF7Ruym//CQzSZTjEU2muVUKlK8Z/hKvrXgfG/yVGWmOpP5X5vDv\n",
       "ML+gYMbUsSsQHldDpq86ED6rajnfdDr1ONxScbbCQkdS/6ke/tBHOjLV+iVqsrVoCLs6Ijig9/ld\n",
       "ZOIgTpZ9nP7rpK/gTM0qzeX9umruGoZwB0UAAABaQZ9FRREsL/8CAm4IYkK1eIHjT5RPxAFI8c8F\n",
       "8FVqBRetoeq4x/VOXnKijeGspxAiNTSGSM+iwgTwABD46LGBwQdb4+1DMt6vD4+K3O27E3MjFDWT\n",
       "UQ85x5IxAAAALwGfZmpCvwKRYPm9aEd4daWaqw7CDV5lYeZ2leNAkjgRxneQev8Q1snBJkHUjK/h\n",
       "AAAAxEGbakmoQWyZTAh///6plgAANRHxSMpnm850MndgBbqIld9WrjUqxa10ECbg6SrVj/8IxZGw\n",
       "nTnBbrxIODq1Gf4SuYs7U0AIDFPazH/QrSQJBdQOZxbwsh1WUJx6JhALh3mX/W310P417+V1Tb4r\n",
       "FGA7G7+iN5xbyIOZz0Lqsx00eL7nbau/xAO6dJF6npPJzkLFTT0UpwxSNY2gxuNOT7310SPe7fr6\n",
       "kTqjD5aGAJC50K2qqAf6FazPzPnhxZXUcyghC+AAAABfQZ+IRRUsL/8CAm4IYkK1eIHjT5RPxAFI\n",
       "8c8F8FVqBX2i4M6MgkpA2EozgEItTe7x8rHxESPBfACEx0WHZ2Rxbn3bRlhoLoIdY23NUcBdh0LC\n",
       "9rXkZuxwSY5WYsUIFbAAAAAwAZ+pakK/ApFg+b1oR3h1pZqrDsINXmVh7f+wLH9KW1DuPsPgiUGO\n",
       "f8OocftYFhljAAAAp0GbrkmoQWyZTAh///6plgAANmPgPGv6yoNc45S1jvw2AA6KIld+NuWkM+4q\n",
       "sFabZQmXJZGViRejkUJmdcbNyN0CIzMBgD9vHOOU8PrUxyta4+3ldNqpMWNpaNw89MWqshfZZwqB\n",
       "a20QbRiDQGeZFVL8d4iHU423lPQdlWUkg8yb6K6LaXcggqRjPVWQ9xwekwdAwJj0lNqBc8VYPQKm\n",
       "KODXGDAata0QAAAAW0GfzEUVLDP/AYHDYyie1zkwuNPd0zDAUYx58HeQDvEjDD//bOACZUOq9O9b\n",
       "uhtJRQTdOMEkXxbOgdrhqzaBMvgYiM0n+mXs6Jdwd8dB8AIC82rHdul2ubd8FbAAAAAwAZ/rdEK/\n",
       "Ao/R50SkRvDp6h4/wDvw5wgUb+uKP9SFzTc0IaegiD9WO/HsEpwHF/LPAAAALQGf7WpCvwKRYPm9\n",
       "aEd4daWaqw7CDV5lYbY5E/wPeBSY+hZopEawv30pfDyBfwAAAKBBm/JJqEFsmUwIf//+qZYAADFR\n",
       "8QE80Q9ZfdAEbNL/MoI3JK5OupbfC8hBaGyFx7MFxl/+7Y6orp3sOsNF4SWuAHdFfi2TS+CMAyZl\n",
       "D3Eb8CmJJyP0OrFl8htxpnufrknZ+RLHmv/Mfl39viX2A5NX0qTaphmGss1v1TqxOyziUFx91Ms1\n",
       "VNOIAFignNCIGRBKhD8zISE/VA6Mkn4FvRYPAAAAQUGeEEUVLDP/AYHDYyie1zkwuNPd0zDAUYx5\n",
       "8HeQDvDFg4vU9srfZSCTd5XEy0wJlcOCCN3eUsgjU/B1WOMnmAO+AAAAJwGeL3RCvwKP0edEpEbw\n",
       "6eoeP8A78OcIEfoZXNxJSGjcALb4AUiHnAAAACUBnjFqQr8CkWD5vWhHeHWlmqsOwg1eZWHR+3O4\n",
       "JXZVqVCjnmhBAAAAWUGaNkmoQWyZTAh///6plgAALbvxCB4taxpUQQA3PCXnO6kqZIatmpRJHyPx\n",
       "Vf/hGy9DOFhDnsN+UyQAyCOfyeax3wogFAhQ82FNRD24hCE2SsJvT+rkrfOQAAAAN0GeVEUVLDP/\n",
       "AYHDYyie1zkwuNPd0zDAUYx58HeQDvB9dw5glYMlw5nk3XnMrENyawmtuvCyAxIAAAAmAZ5zdEK/\n",
       "Ao/R50SkRvDp6h4/wDvw5wgRpF3b2n9I3rOz3y1hH3EAAAAlAZ51akK/ApFg+b1oR3h1pZqrDsIN\n",
       "XmVhsJZ/G+7wvgk/DwHQQAAAABdBmnpJqEFsmUwIf//+qZYAAAkPzE0vJQAAAC1BnphFFSwz/wGB\n",
       "w2Montc5MLjT3dMwwFGMefB3kA7wKq9YBruIJAwfbEigB20AAAAeAZ63dEK/Ao/R50SkRvDp6h4/\n",
       "wDvw5wgQLSiLpoP2AAAAHQGeuWpCvwKRYPm9aEd4daWaqw7CDV5lYYGjwTJRAAAAHkGavkmoQWyZ\n",
       "TAh///6plgAAJQaJH4uJGnpM5245wAAAAC9BntxFFSwz/wGBw2Montc5MLjT3dMwwFGMefB3kA7w\n",
       "TsI1i3hzcIoeARkUqHAiIQAAACABnvt0Qr8Cj9HnRKRG8OnqHj/AO/DnCBEa0xcEiXYMuQAAAB0B\n",
       "nv1qQr8CkWD5vWhHeHWlmqsOwg1eZWGBo8EyUQAAACtBmuJJqEFsmUwIf//+qZYAACyb8UZj6w58\n",
       "ABxKJUFMroE6UO22vns5/RggAAAAMkGfAEUVLDP/AYHDYyie1zkwuNPd0zDAUYx58HeQDvB2aClS\n",
       "waAf967s2ODy7US9PBKRAAAAIwGfP3RCvwKP0edEpEbw6eoeP8A78OcIEaQ3kDZp4nro6JPwAAAA\n",
       "HQGfIWpCvwKRYPm9aEd4daWaqw7CDV5lYYGjwTJRAAAAFUGbJkmoQWyZTAh///6plgAAAwDwgAAA\n",
       "ACxBn0RFFSwz/wGBw2Montc5MLjT3dMwwFGMefB3kA7wKq9QSgIO47MMrxQOGQAAAB0Bn2N0Qr8C\n",
       "j9HnRKRG8OnqHj/AO/DnCBAQvqcu0QAAAB0Bn2VqQr8CkWD5vWhHeHWlmqsOwg1eZWGBo8EyUQAA\n",
       "AB5Bm2pJqEFsmUwIf//+qZYAACUGiR+LiRp6TOduOcEAAAAvQZ+IRRUsM/8BgcNjKJ7XOTC4093T\n",
       "MMBRjHnwd5AO8EtwM2nQqvfTRaI8cn24ERAAAAAdAZ+ndEK/Ao/R50SkRvDp6h4/wDvw5wgQEL6n\n",
       "LtAAAAAgAZ+pakK/ApFg+b1oR3h1pZqrDsINXmVhmZS0PUzuitkAAAAmQZuuSahBbJlMCH///qmW\n",
       "AAAz0f9HZkvoDF8DpJ9YUTKbOOJT51AAAAAzQZ/MRRUsM/8BgcNjKJ7XOTC4093TMMBRjHnwd5AO\n",
       "8Pawh6laSUAthiFC/Bnu1FQxoKyAAAAAHQGf63RCvwKP0edEpEbw6eoeP8A78OcIEBC+py7RAAAA\n",
       "JAGf7WpCvwKRYPm9aEd4daWaqw7CDV5lYeY+uD5UeqrPEaUiYQAAAB5Bm/JJqEFsmUwIf//+qZYA\n",
       "ACQUENvqhW39DkDGk+MAAAAvQZ4QRRUsM/8BgcNjKJ7XOTC4093TMMBRjHnwd5AO8DbMcXTrAEtL\n",
       "5BB30v2EBKwAAAAgAZ4vdEK/Ao/R50SkRvDp6h4/wDvw5wgQwEgEcHR3RlQAAAAdAZ4xakK/ApFg\n",
       "+b1oR3h1pZqrDsINXmVhgaPBMlEAAAA3QZo2SahBbJlMCH///qmWAAAyo+UG+MAArcRCLoLre36G\n",
       "AAn1eV33u+AnDoKk1OhBf5T+PKTeJgAAADFBnlRFFSwz/wGBw2Montc5MLjT3dMwwFGMefB3kA7w\n",
       "58ZKvTowVxzOr5ECg8sCzgkYAAAAIgGec3RCvwKP0edEpEbw6eoeP8A78OcIE4MdhkBzuhb/DikA\n",
       "AAAdAZ51akK/ApFg+b1oR3h1pZqrDsINXmVhgaPBMlEAAAAdQZp6SahBbJlMCH///qmWAAAxWLSd\n",
       "ubwhzD7RcSEAAAAvQZ6YRRUsM/8BgcNjKJ7XOTC4093TMMBRjHnwd5AO8MryNtXpu4xNVoD9Gp5Y\n",
       "J2EAAAAgAZ63dEK/Ao/R50SkRvDp6h4/wDvw5wgSui7FIUlQxIAAAAAdAZ65akK/ApFg+b1oR3h1\n",
       "pZqrDsINXmVhgaPBMlEAAAAVQZq+SahBbJlMCH///qmWAAADAPCAAAAALEGe3EUVLDP/AYHDYyie\n",
       "1zkwuNPd0zDAUYx58HeQDvAqr1BKAg7jswyvFA4ZAAAAHQGe+3RCvwKP0edEpEbw6eoeP8A78OcI\n",
       "EBC+py7RAAAAHQGe/WpCvwKRYPm9aEd4daWaqw7CDV5lYYGjwTJRAAAAQ0Ga4kmoQWyZTAh///6p\n",
       "lgAAMCPlF9nfwlcEQBWqp2cdHUlNPl0nbwj5txERoy+hIVKb3Edwg2A30t9PtULci8972ugAAAAx\n",
       "QZ8ARRUsM/8BgcNjKJ7XOTC4093TMMBRjHnwd5AO8I+cSFPuZOsTNUJpyTAgY0GBOwAAAB0Bnz90\n",
       "Qr8Cj9HnRKRG8OnqHj/AO/DnCBAQvqcu0AAAACIBnyFqQr8CkWD5vWhHeHWlmqsOwg1eZWG2RIxz\n",
       "lZZoPSe1AAAAHkGbJkmoQWyZTAh///6plgAAJQaJH4uJGnpM5245wAAAAC9Bn0RFFSwz/wGBw2Mo\n",
       "ntc5MLjT3dMwwFGMefB3kA7wTsI1i3hzcIoeARkUqHAiIQAAACABn2N0Qr8Cj9HnRKRG8OnqHj/A\n",
       "O/DnCBD35X04Tqi8gQAAAB0Bn2VqQr8CkWD5vWhHeHWlmqsOwg1eZWGBo8EyUQAAACRBm2pJqEFs\n",
       "mUwIf//+qZYAADQe6K8SQO8XAsVJSL+mUiB2+sEAAAAyQZ+IRRUsM/8BgcNjKJ7XOTC4093TMMBR\n",
       "jHnwd5AO8PbpGcbSb17Z7AW7w1bxrTuQO+AAAAAdAZ+ndEK/Ao/R50SkRvDp6h4/wDvw5wgQEL6n\n",
       "LtAAAAAjAZ+pakK/ApFg+b1oR3h1pZqrDsINXmVh5naAe7Y+QMZXI8EAAAAeQZuuSahBbJlMCH//\n",
       "/qmWAAAkFBDbxFVQvxttQr8QAAAAL0GfzEUVLDP/AYHDYyie1zkwuNPd0zDAUYx58HeQDvA2zHF0\n",
       "6wBLS+QQd9L9hASsAAAAIQGf63RCvwKP0edEpEbw6eoeP8A78OcIEMJ4+5TUicBgwQAAAB0Bn+1q\n",
       "Qr8CkWD5vWhHeHWlmqsOwg1eZWGBo8EyUQAAAB5Bm/JJqEFsmUwIf//+qZYAADFhq2LqhW39Djsh\n",
       "QyMAAAAvQZ4QRRUsM/8BgcNjKJ7XOTC4093TMMBRjHnwd5AO8MryNtXpu4xNVoD9Gp5YJ2AAAAAg\n",
       "AZ4vdEK/Ao/R50SkRvDp6h4/wDvw5wgTEvqpQqjIC2gAAAAdAZ4xakK/ApFg+b1oR3h1pZqrDsIN\n",
       "XmVhgaPBMlEAAAAVQZo2SahBbJlMCH///qmWAAADAPCAAAAALEGeVEUVLDP/AYHDYyie1zkwuNPd\n",
       "0zDAUYx58HeQDvAqr1BKAg7jswyvFA4YAAAAHQGec3RCvwKP0edEpEbw6eoeP8A78OcIEBC+py7R\n",
       "AAAAHQGedWpCvwKRYPm9aEd4daWaqw7CDV5lYYGjwTJRAAAAFUGaekmoQWyZTAh///6plgAAAwDw\n",
       "gQAAACxBnphFFSwz/wGBw2Montc5MLjT3dMwwFGMefB3kA7wKq9QSgIO47MMrxQOGQAAAB0Bnrd0\n",
       "Qr8Cj9HnRKRG8OnqHj/AO/DnCBAQvqcu0AAAAB0BnrlqQr8CkWD5vWhHeHWlmqsOwg1eZWGBo8Ey\n",
       "UQAAABVBmr5JqEFsmUwIf//+qZYAAAMA8IAAAAAsQZ7cRRUsM/8BgcNjKJ7XOTC4093TMMBRjHnw\n",
       "d5AO8CqvUEoCDuOzDK8UDhkAAAAdAZ77dEK/Ao/R50SkRvDp6h4/wDvw5wgQEL6nLtEAAAAdAZ79\n",
       "akK/ApFg+b1oR3h1pZqrDsINXmVhgaPBMlEAAAAVQZriSahBbJlMCH///qmWAAADAPCAAAAALEGf\n",
       "AEUVLDP/AYHDYyie1zkwuNPd0zDAUYx58HeQDvAqr1BKAg7jswyvFA4ZAAAAHQGfP3RCvwKP0edE\n",
       "pEbw6eoeP8A78OcIEBC+py7QAAAAHQGfIWpCvwKRYPm9aEd4daWaqw7CDV5lYYGjwTJRAAAAFUGb\n",
       "JkmoQWyZTAh///6plgAAAwDwgAAAACxBn0RFFSwz/wGBw2Montc5MLjT3dMwwFGMefB3kA7wKq9Q\n",
       "SgIO47MMrxQOGQAAAB0Bn2N0Qr8Cj9HnRKRG8OnqHj/AO/DnCBAQvqcu0QAAAB0Bn2VqQr8CkWD5\n",
       "vWhHeHWlmqsOwg1eZWGBo8EyUQAAAGhBm2pJqEFsmUwIf//+qZYAADKR/xifAbWoqAFgtVMen8dx\n",
       "VQnje5eybCCS3r/4eyF/NRnWSN4ttkauSCCNgY9wU0EP5pHlZAa90SOePM6/znURpyT5hEryEQuw\n",
       "prTjFobYaHkI78vDoQAAADNBn4hFFSwz/wGBw2Montc5MLjT3dMwwFGMefB3kA7w58znwUQCbkeT\n",
       "wOSgjQ0vuI+4BkQAAAAkAZ+ndEK/Ao/R50SkRvDp6h4/wDvw5wgTcsbjwwlfJHNxlCugAAAAHQGf\n",
       "qWpCvwKRYPm9aEd4daWaqw7CDV5lYYGjwTJRAAAAFUGbrkmoQWyZTAh///6plgAAAwDwgAAAACxB\n",
       "n8xFFSwz/wGBw2Montc5MLjT3dMwwFGMefB3kA7wKq9QSgIO47MMrxQOGAAAAB0Bn+t0Qr8Cj9Hn\n",
       "RKRG8OnqHj/AO/DnCBAQvqcu0QAAAB0Bn+1qQr8CkWD5vWhHeHWlmqsOwg1eZWGBo8EyUQAAACVB\n",
       "m/JJqEFsmUwIf//+qZYAADFR/0fWS+di8YOkmgTDMpk2+PPrAAAAMkGeEEUVLDP/AYHDYyie1zkw\n",
       "uNPd0zDAUYx58HeQDvDMWuvMvZeEdpDmqo5vZD5CgL+AAAAAIwGeL3RCvwKP0edEpEbw6eoeP8A7\n",
       "8OcIEsHf3lV3ggnOQgbkAAAAHQGeMWpCvwKRYPm9aEd4daWaqw7CDV5lYYGjwTJRAAAAHkGaNkmo\n",
       "QWyZTAh///6plgAAJQaJH4uJGnpM5245wAAAAC9BnlRFFSwz/wGBw2Montc5MLjT3dMwwFGMefB3\n",
       "kA7wS3AzadCq99NFojxyfbgREAAAAB0BnnN0Qr8Cj9HnRKRG8OnqHj/AO/DnCBAQvqcu0QAAACAB\n",
       "nnVqQr8CkWD5vWhHeHWlmqsOwg1eZWGZlLQ9TO6K2AAAAD9BmnpJqEFsmUwIf//+qZYAAC8ZdX8J\n",
       "W2AAWC1Uxw5Qn4xMfH6tN2wsn73thRmg4//v4VtkWpQmrDbzlST5REEAAAAvQZ6YRRUsM/8BgcNj\n",
       "KJ7XOTC4093TMMBRjHnwd5AO8IbC6RK0+02XtBB3I7meC0kAAAAgAZ63dEK/Ao/R50SkRvDp6h4/\n",
       "wDvw5wgR118mn+Zjh9wAAAAdAZ65akK/ApFg+b1oR3h1pZqrDsINXmVhgaPBMlEAAAAVQZq+SahB\n",
       "bJlMCH///qmWAAADAPCAAAAALEGe3EUVLDP/AYHDYyie1zkwuNPd0zDAUYx58HeQDvAqr1BKAg7j\n",
       "swyvFA4ZAAAAHQGe+3RCvwKP0edEpEbw6eoeP8A78OcIEBC+py7RAAAAHQGe/WpCvwKRYPm9aEd4\n",
       "daWaqw7CDV5lYYGjwTJRAAAAFUGa4kmoQWyZTAh///6plgAAAwDwgAAAACxBnwBFFSwz/wGBw2Mo\n",
       "ntc5MLjT3dMwwFGMefB3kA7wKq9QSgIO47MMrxQOGQAAAB0Bnz90Qr8Cj9HnRKRG8OnqHj/AO/Dn\n",
       "CBAQvqcu0AAAAB0BnyFqQr8CkWD5vWhHeHWlmqsOwg1eZWGBo8EyUQAAACtBmyZJqEFsmUwIf//+\n",
       "qZYAADKR/0hUUjjFmFaRatBV26lH4jLS+rNE+D+6AAAANUGfREUVLDP/AYHDYyie1zkwuNPd0zDA\n",
       "UYx58HeQDvDmhfQQdec19mCmTxbFBsG0bgTZtAvZAAAAIgGfY3RCvwKP0edEpEbw6eoeP8A78OcI\n",
       "EeEifQPsYCoo8cUAAAAhAZ9lakK/ApFg+b1oR3h1pZqrDsINXmVh3dU1aemI9BWRAAAAFUGbakmo\n",
       "QWyZTAh///6plgAAAwDwgQAAACxBn4hFFSwz/wGBw2Montc5MLjT3dMwwFGMefB3kA7wKq9QSgIO\n",
       "47MMrxQOGAAAAB0Bn6d0Qr8Cj9HnRKRG8OnqHj/AO/DnCBAQvqcu0AAAAB0Bn6lqQr8CkWD5vWhH\n",
       "eHWlmqsOwg1eZWGBo8EyUQAAACVBm65JqEFsmUwIf//+qZYAADFR/0VzfUIz3tyrUkp6RF/8t+Zi\n",
       "AAAAMkGfzEUVLDP/AYHDYyie1zkwuNPd0zDAUYx58HeQDvDEctlSvyR/x8mj9TtQp1adIBdwAAAA\n",
       "HQGf63RCvwKP0edEpEbw6eoeP8A78OcIEBC+py7RAAAAIwGf7WpCvwKRYPm9aEd4daWaqw7CDV5l\n",
       "YcmwEBMAL0tcu4/xAAAAFUGb8kmoQWyZTAh///6plgAAAwDwgQAAACxBnhBFFSwz/wGBw2Montc5\n",
       "MLjT3dMwwFGMefB3kA7wKq9QSgIO47MMrxQOGAAAAB0Bni90Qr8Cj9HnRKRG8OnqHj/AO/DnCBAQ\n",
       "vqcu0AAAAB0BnjFqQr8CkWD5vWhHeHWlmqsOwg1eZWGBo8EyUQAAABVBmjZJqEFsmUwIf//+qZYA\n",
       "AAMA8IAAAAAsQZ5URRUsM/8BgcNjKJ7XOTC4093TMMBRjHnwd5AO8CqvUEoCDuOzDK8UDhgAAAAd\n",
       "AZ5zdEK/Ao/R50SkRvDp6h4/wDvw5wgQEL6nLtEAAAAdAZ51akK/ApFg+b1oR3h1pZqrDsINXmVh\n",
       "gaPBMlEAAAAVQZp6SahBbJlMCH///qmWAAADAPCBAAAALEGemEUVLDP/AYHDYyie1zkwuNPd0zDA\n",
       "UYx58HeQDvAqr1BKAg7jswyvFA4ZAAAAHQGet3RCvwKP0edEpEbw6eoeP8A78OcIEBC+py7QAAAA\n",
       "HQGeuWpCvwKRYPm9aEd4daWaqw7CDV5lYYGjwTJRAAAAFUGavkmoQWyZTAh///6plgAAAwDwgAAA\n",
       "ACxBntxFFSwz/wGBw2Montc5MLjT3dMwwFGMefB3kA7wKq9QSgIO47MMrxQOGQAAAB0Bnvt0Qr8C\n",
       "j9HnRKRG8OnqHj/AO/DnCBAQvqcu0QAAAB0Bnv1qQr8CkWD5vWhHeHWlmqsOwg1eZWGBo8EyUQAA\n",
       "ABVBmuJJqEFsmUwIf//+qZYAAAMA8IAAAAAsQZ8ARRUsM/8BgcNjKJ7XOTC4093TMMBRjHnwd5AO\n",
       "8CqvUEoCDuOzDK8UDhkAAAAdAZ8/dEK/Ao/R50SkRvDp6h4/wDvw5wgQEL6nLtAAAAAdAZ8hakK/\n",
       "ApFg+b1oR3h1pZqrDsINXmVhgaPBMlEAAAAeQZsmSahBbJlMCH///qmWAAAykf9C87KAQuZocuBA\n",
       "AAAAMEGfREUVLDP/AYHDYyie1zkwuNPd0zDAUYx58HeQDvDmgeglrQu7g1VWH27TUfoEjQAAAB0B\n",
       "n2N0Qr8Cj9HnRKRG8OnqHj/AO/DnCBAQvqcu0QAAACEBn2VqQr8CkWD5vWhHeHWlmqsOwg1eZWHd\n",
       "1TVp6Yj0FZEAAABEQZtqSahBbJlMCH///qmWAAAwFG3NAEeIiV341TtCFJvAqG9BOxB5KrH/A723\n",
       "ystV+q/E3CkvsPWGsMaBhazP4FgQaIkAAAAwQZ+IRRUsM/8BgcNjKJ7XOTC4093TMMBRjHnwd5AO\n",
       "8I9ztedzr6Hu2tBPjlBQeCNgAAAAHQGfp3RCvwKP0edEpEbw6eoeP8A78OcIEBC+py7QAAAAKgGf\n",
       "qWpCvwKRYPm9aEd4daWaqw7CDV5lYbbt0rrYxngBCYZGNAsBDbiqgQAAACxBm65JqEFsmUwIf//+\n",
       "qZYAAAYCcCYAvt5z/cNT33D5fRD6T177uZrziF6jTQAAAC1Bn8xFFSwz/wGBw2Montc5MLjT3dMw\n",
       "wFGMefB3kA7wKq9QSpQRWzehq/JLAZ8AAAAeAZ/rdEK/Ao/R50SkRvDp6h4/wDvw5wgQHYS4cQSd\n",
       "AAAAHQGf7WpCvwKRYPm9aEd4daWaqw7CDV5lYYGjwTJRAAAAHUGb8kmoQWyZTAh///6plgAAMVH/\n",
       "QvOygELgNihJAAAAL0GeEEUVLDP/AYHDYyie1zkwuNPd0zDAUYx58HeQDvDK8jbV6buMTVaA/Rqe\n",
       "WCdgAAAAIAGeL3RCvwKP0edEpEbw6eoeP8A78OcIErouxSFJUMSAAAAAHQGeMWpCvwKRYPm9aEd4\n",
       "daWaqw7CDV5lYYGjwTJRAAAAFUGaNkmoQWyZTAh///6plgAAAwDwgAAAACxBnlRFFSwz/wGBw2Mo\n",
       "ntc5MLjT3dMwwFGMefB3kA7wKq9QSgIO47MMrxQOGAAAAB0BnnN0Qr8Cj9HnRKRG8OnqHj/AO/Dn\n",
       "CBAQvqcu0QAAAB0BnnVqQr8CkWD5vWhHeHWlmqsOwg1eZWGBo8EyUQAAABNBmnlJqEFsmUwIV//+\n",
       "OEAAABxxAAAAKkGel0UVLCv/ApIzh7ptineHWRY8embITyyE2NzfBRJpHTG5491XRUEB3QAAAB0B\n",
       "nrhqQr8CkWD5vWhHeHWlmqsOwg1eZWGBo8EyUQAADwBliIIABL/+963fgU3AQO1rulc4tMurlDQ9\n",
       "UfaUpni2SAAAAwADlGX8JyP6gIQCkImtGFsd3rtSJi9qY8lY8b1qvx1sSFf1/4z5/Vgc0N0Z3PB5\n",
       "5pBWtn1ZJ3WS+XCbRnnbxIopv6av8V5jL0mOdv87ilIOc+s6aXSs15xE5Aera/y1uKAAACrvS8e5\n",
       "s0au1cHDlyVLDZDSzFPbV16Nm6IvXS/dvqYlVOM+xSkC92Hf6hYWeqmqioZg8kejCmMT7dno91q8\n",
       "QyF3LzFVndzj0vLRjN5XdHx/Y5aICEd0OJOlMPvJSyyx+tNPBHYcXBgymv4nfPnH1QDseZ2JogA2\n",
       "6gLmevGLwmqxLzuftK1PZU0CMjqgtk/5h03CD2uNen18EUeLcT75LalyxK94APqUJu8IU7PldTus\n",
       "J61f1vKD7vY3j8jlQKx1qk0mgGi/ol30DnfYwfq2UPXwsx6hmta6Eu5VCUDvc37zjukUL0ycb4Ef\n",
       "BXry23if7sucSGVGAzqda4rVz9RPvUJpAbdsM71wWuDI6s9+lQ0KHdHEzmgIRc2WbbU9vYDIlpSc\n",
       "eO8hTjP95nTsRbrFSHhF6s8Rf5z//zq4Ug815eye4ZGZa/LL1P9Y/0PwJMo3YEM3qyiVL1Vm2e0G\n",
       "vNFgNgaceQPzo6RgfwL+J3ynVM2XXWR2Ny0mTTYZsoh7oaELWpAMlZBHeXj+/oifEkNHZvgzpldr\n",
       "rJrVkHIDbfRqKvDTsEwPqk8HtZsFQhjAB2bwb6zmp3ZNjsV5K4B1YP1UHb9FBbzLQ6YppI4gzIRm\n",
       "2fU9970qWOuy+CT/0j9aBqdv2NJkdVmLel8uMGeMWkxE7aGSHM/WfmypDsmJ2ISfYxO9SrB89ttS\n",
       "DPAAK/ncaHm6CA+iZ9aBnsBLQkj6J9SDZBkEtHsAJTIJJ30r8WVtT9ySKr2D9cqSwk5NhyvWQ1v9\n",
       "kdPJL7DNAX+P08LUo2LD+rqsyQ7Ia91RGAh878uIiUZnMCFiLWkdShcQT/W2c0N82AQovG5Jj9Xo\n",
       "S4mAnk3IqCimbMRtV1uocW6cBxjABQvyGemPL2m/zrMBda/V7K8Y9NKZZW0N38yiV53GI4ZILVK3\n",
       "bsN8aiIkJ/K72Th8U02Y2BVUfZX8QWXy4w4y3UXjlnQ+PGiMl3lYuSkefmYoIavval1RjrT89Ig/\n",
       "uHU/v6+B0RPumw0u134NBJPEkPgPVhNzIoZ/k2mn3iv2g3NvJmeouAlK1Ok4MQjfL2Fih0KG58Li\n",
       "IT8wBggNbU90aFP5WcgUUixBlhnuZPv0lZ7NKoZx0xWv62n1XRhsdm4+9bfqosUHDtXol6apmGcO\n",
       "BLVKDvdf5jC5wH6J8Dg+VCIQYNf3Cs2fXMK21tQcF2JbmFWSXCy6cQKVnpApP+R4ZY7ffgUMBKpO\n",
       "y6XYmGDO222zinAsWjE1UYl7RQTLkBdTS9JnQDRW6Y0VkSvSLlzxLkf2PvhJ/g4Uv92JnKTxUAgX\n",
       "c14xIbIZelRK/VU12y4Ll2cCwdueGPVWlPzMRsQo8fnh8T0pxQMbWEvjxkJ2cy/6n3meV25JTVg5\n",
       "uNooa6f7ucyux+Disvl1SEA3ymqZtOAv533N02Cy/+wdU8rvuCP8PB5cbm/BppYFK1BcZ4wnN/Ya\n",
       "49lfjWVb/xObB8LzPhOdiTT38iLAe2n7ba7AgZfyTt4kDE2Xkb+Ze0p9dlQOKqsthK+s4nCyiAWB\n",
       "CB6xRCGsdaADgQub+Dc+YGWKgHQu5c3WF1wR0h4PS+kB6YPdtyZ3QJ13p3oq81sUwugdMwo2U7Lv\n",
       "xMgfocVzDc6ggo+sEuI/AqKJcmLXTYMXq6AnjoLAEDts+SHYspv6rJ8MXTzK2+PBJ6ICyxsKN5+D\n",
       "3+UmI9MKL+i0vw4EU1UeDFkSjprMdSnVO8hj6/NBidCRNrg5EFL9ccw/Ux9J9Za22E3Z3+Y2lNgd\n",
       "M5a9pCjk7WxN9A95/zP74FqKKWgk09NJIOAO02kPKkypKB/GbgUrJoDKtjh0zQcdeI4bSQBq8PC5\n",
       "Fp4rqDl4Ow14ArWV8bhrUwBwoM0qsyEuSyAT5Y+kra0QM/hfben4SOfBI83fVdK9U8RTVF+ZlXWc\n",
       "kOT/EIDF340uC8OVJKh/X0I8ZD7/U01kN5b5JkoG1kQiMvNIsxjEPSmTG93tZB5riR0P7HD4ZqO6\n",
       "ZfQ3/bPs9SQm/PShKwUPvIx+qhqMrCoHLE9Pu3Pjd7Kah6N0zM60mTjWlZvJOn+6U1tl6ysNEXYF\n",
       "S2IdpdArXR8gd5yhAkqcT0259WQCuRn9ZGeY0CAlX8n0A41OwJNLPPdFfP5G54Wj7zqW+SpkBpB2\n",
       "0vRdWKLlwQNZImBDXLEre+ZNo+esnHqye/+PdVQBAGNyv1Dyx1/CyVKF+qZ3mbfXQ9bIIC2mPfq6\n",
       "2IQ93WRHV57XUP4EdvM56XoPk4zbd1WQKRlAJKtLcjR0Y2Si9d38j38LkKU71NqHaJLoshSa/T5X\n",
       "SuUUTSFd3kdS8l9EItpGvOYfPhitL89lF0VJzstbi2ukn1qXG2TnV/C6xl8LQiyGi7Y/c3NkoKFp\n",
       "06ZJq4ocpl5SPLqK44zD4Ig2pWLyEJW6VtdTcQbshGgJMXsNlvOBiCvvqT7nI8DVA9D3CCeR3QtR\n",
       "RppI2rs1iP5C0kDSiurlKx8VoQt+xMFT8+sPsc2Ao1X6tSNM0tfszStwc5Lf5Bf8Z/KEfpQ+Q/HT\n",
       "Uk+bLumC5UvTgezR4arRjQBAwEeEVSUIommi0DoaLn4IyUXRYXMEnCFLkV5zRSLSX0TOKmn/RHJ5\n",
       "ycrKmOxAZX++MxahIaxnu2RhgJpbPtyZ0DwWD1MY7rIYVneSsTRyP8I+HW1k2/jukv59roQZaDk2\n",
       "5PkHNMN0+Loo1MRyNQ3PtIdNeOB//hyY7Pobg7ciPq+jke8ZXFFQigWCFZHjhfdK7/kQsL0xXrLw\n",
       "W77+A1wq8wL+wLEA0wmmWwIo122hF8STtxuApcyR7Aug9aBR+zP2X1840DZNwbbb/+/fnrNNtn1f\n",
       "J3JiDJKGG2F7HwEj37ab97YOBVoQ2oi7cVh8sCbaRvhGu4Jm1xSDvouwzx6n0AYBiPVwEUGWndAE\n",
       "up3cYBMxVeq8vawRdNRz4+LQwDDum1G6KD77j3qFcQj6Wt0ihwewiAAkep/T0f0uwWf2p5zXM8tC\n",
       "KtCEzVReqfylKeg0yTePuyX90v6kqy1VpPy0ELLA8s/f6C45IOUEBCkhnlCnHIywHoKa8cfPrrmW\n",
       "23wO4cB3CaBIqyPRCB2LAsZN+gOAYNitCovAADBzDsjniJB1jP49UidixP5kYFBonBNVtmPZqeY/\n",
       "LnVZbyTW1rTzy4/xWCV+G5Ol5keQnbVGTkO1z2g30A2C1By/U2iTE2l0dCJkZgAvFrUM5zZSBQnX\n",
       "gIQFUryZUNDOqLKWrmi0/jE6osc80EDq6xaHHc6V3C01LW84JEqGmPe1LsY85fLOXNAK97rZQDSM\n",
       "fb2Mtr9zzD4r9QKkKjUtNN1Kou6iCV/8lpSAjvV2l4LkuSsz3GoYmE2e1BFVLrQ7R4JZAAcdEGyU\n",
       "DyLOKG4spcpmEifMqcg1P3m3slEh6PTNLYt1CfD1DaAXLuOE+Daxc5r/9h+J63CBgmIXYOa/Ejf3\n",
       "eheNtH+d2WdZr2WnbXZ+ZXpYquw1tQEtzjAUUJPEF91Uop2RStWsWFDorP5DBeDHrMf/RE+ISVF3\n",
       "jc9xCm5232zXmHTXdaV86z84c6SQqUWDr1NZ5ownfLEG8aauw5NyzJ7GGHYhmLuJ9gEOdkxTHj6F\n",
       "GiJSqzH2TM4oY/kVQdG6O+2IuYx9UvNVn6DEZgvqzxjWfFi8aShfPM1UYj5QI7dVt12E1TOr76+X\n",
       "IgH//tZ//sJLYHIhJqNP3A9VAZfsPCcv95DTf/WEWS8A1+iHzH6Hggmx/uNHOdp0QviGBMa/7NtM\n",
       "D7HANYtuns14qbDagHC+QjJ7vaczUrfcfN/hZK4r8V4nB7EIDfOD5BENhy514r25Y1x8sZR4PdSw\n",
       "nWXlNbHFi8+d/ck6+dnSZnyEQje5dtpKr0JPMyN3/9CQ2tMimQxWn2aqusAUyuwSpXZSltqoCzwx\n",
       "j1KgOW3PiPVEWck3sl1ORLGLHPMZlo+e9pUw+9C3/XvjVk92+CIMEYCizhWyFuRe+jbXjjWRT7MF\n",
       "x+goshyf0NYv+QThDRRAPr87q9x4cDv6QBdbNg4AV/rjSMxVmng/wmpwuouHvp3r77jF68ggDDBI\n",
       "OBDF42sTDAE7dft7IO/CPQSyHDvt94jKuTp1vLtFNQMT2vLUBWkxpufXgM/MVvg4jLLfn7mEgLSD\n",
       "L/1bEWXxDiUDKgwGTdFsluWVUBFrPGQQSY3aYsynFPUH5XAXKy64rll2cDndIu24RwDuS+vZ/zJQ\n",
       "ElLNXn+pvYw5FM4PKBDnFhx9a1cSREmw2hI255LVVMt+9ibTK2dfTR8zqPoxX76BsSrS949OZdWy\n",
       "eLdaDCgOaBjTYvYk50wS01fvZthLL4VnG9NhQD2UUFkUhLg+xrKiN89e7gA4a30FWAXbr58VNaVb\n",
       "2lAet4NQrSwzl5j6+tVS8UGaQm4RQSYvO8StxipIUsOmCvfB2IuLuEy0hl+fqxTYfNWpFcw71Yxv\n",
       "cfb2+SX4s2FahLetyI9sNTuRkE1Qu5+QCiBbJ5LWUx1ou9Mu2MZVUe0TlAkWd5TPRa479PGqyCe5\n",
       "6lRdhXaVvgv9VTLX/LLrz70473JNBvazWwzHWXJCOv3qGDb+WwaCaqnorj+SLpMcbz6D8WQ5iBzB\n",
       "v3beuUVliDJlO2Upl/+h8Ibjsc5YKVn/xWCY0edV3w/1lXohakEFZUvNAqMrgiNywRh7/COnBnhs\n",
       "cmvyhCbwzyOXFZfJFMf6jPkMEp3QBmRYmP3F0CrZBmPwNEQOHHmm9B7mzG+igNsdhLUeWKEje00U\n",
       "pVV+DOuVmMwayq5fXll2Vmm1Rltj/Z1Tnj2EOEu7bgyoRzyU17emaDGo6B/X9o2hQdGegeULWOvg\n",
       "xnR+/ghzCdzkz9eZr7U/H0ILQAxSpro9k6Hbr4HdapuZLkrQwTVgYlzEZ2WKx4+stNc8zJUhvJZ1\n",
       "LL1Ddmzy/OZj8SJ3vpWPUimgVx3IuCRq/p/XmG8+6uwahqOB9DYc0AAAAwAEVajxIjCbzIEAAAIH\n",
       "QZokbEP//qmWF4+XgIVKoQu8buL8ozji2vB4nJEYraM/TLkwpXtFXOEnxEcvrICaIyAsPoaSx+y8\n",
       "mysd8/0oD8ZZmQ6C6U2ttZJ+6N4K+ZhFWHL+dYDF4U9Cogx7UiQk9UyjHvj4GKcnnRwDiZAFKmlM\n",
       "IXBluLtD86H63Dxax+2g/fufLSE1LOeKzhzgDugRVJ/YGlV6A71ZSGOoGpu2oJiJpYWhe5igvy5C\n",
       "v9hRRfZHUQdLCJf2VOTUVt7gaOLS0DpkmfrQHMImnj8cYmFrq5rCiFxXaelH604EEzXZ3bheYb/e\n",
       "LcgtGcNn752LGUr+L6hnOfFGVY0ki0BiAuRcNtHxGJ1QzYCaAFo4X7u86mwcf3W4LwvmOBJhfQmE\n",
       "ufMpc69kZaA1paOCxgjJkZ06mJypdm2pgFtIIk9szwvvHoDsaco/lRsZUrQZrQpAkAyQat4WbgHC\n",
       "eHprUANn1l86JltU1l+JQsdHP6dg8CONqafwfM9K+Lg0x1qwAtNCcjEKm//MCbvAZ2HVeTXpPhm4\n",
       "gR+9oSE2cVtN4si+WiM0DTAOjIkH/ENk09YYm07A/9JCty3XGFRaWsofIfiBCCQOajTZzSJfaUoS\n",
       "qIIeNUI/Gv6ZNRKypdQJQv/ZCepD5zNKNsMf1sxRHQYG2uS8oe/u3Wep2L0g5h5A+HIqMVRLZUy4\n",
       "oeEeaBYwAAAAVkGeQniGfwI72aWGNTg1Ma3WtqEdQ3qLE/ocigmbYfbeupPQbM7jYuD/uz89S5Oc\n",
       "pUZJ/g3r/DPj0fm0xU0YG7WawSPdfRchyWoQEzdRzy36Kd9wl4ERAAAAOAGeYXRCvwPPmx4OAbTS\n",
       "Q+wxvnyFPoOB4r8xhZ2jYsXUNClBNsg1wKydctyqt00og/cuViS0EBlRAAAAKAGeY2pCvwOcwvof\n",
       "LonIPMlZOAuSp/tP+7XGDeCxb+2g5ii4VJy8tyAAAAAwQZpoSahBaJlMCH///qmWBh8xMdSoLawg\n",
       "LSwvjbUVEBSXey8uoDoyWyHJfa2n8hFjAAAAJ0GehkURLDP/AheHZTEeUlU8QoVD/0IatEgKCvsy\n",
       "C2OQ4B7c2xOWCQAAACMBnqV0Qr8DmaTSTqsHIxiO1rcSU1g2FWq7ZsxeRGuzqdj+kAAAABEBnqdq\n",
       "Qr8DnML6KpdSU7hKwQAAABVBmqxJqEFsmUwIf//+qZYAAAMA8IAAAAAWQZ7KRRUsM/8CF4dlMYzF\n",
       "U+DYd+CvgQAAABEBnul0Qr8DmaTSZgmJOViygQAAABEBnutqQr8DnML6KpdSU7hKwQAAAC9BmvBJ\n",
       "qEFsmUwIf//+qZYAADUR8UjKeCbwOAjC5ShGRSjNFRkEAHPfkJgd6HkcDQAAAB9Bnw5FFSwz/wIX\n",
       "h2UxjMVT4Nh4BgGfWhatuqQ0zj4gAAAAFQGfLXRCvwOZpNJmCYk5fJl1sdDkVAAAABUBny9qQr8D\n",
       "nML6KpdSU8gIx8RcLqcAAAAVQZs0SahBbJlMCH///qmWAAADAPCAAAAAGEGfUkUVLDP/AheHZTGM\n",
       "xVPg2HgE9APPgAAAABEBn3F0Qr8DmaTSZgmJOViygQAAABEBn3NqQr8DnML6KpdSU7hKwQAAACZB\n",
       "m3hJqEFsmUwIf//+qZYAADFR/0jW8PgShAZScmJxZFJ+WcwJBQAAAB9Bn5ZFFSwz/wIXh2UxjMVT\n",
       "4Nh4BPR4W9G536FTP1EPAAAAFQGftXRCvwOZpNJmCYk5e7e6dVG1JAAAABYBn7dqQr8DnML6KpdS\n",
       "U8Y/pHY5K26BAAAAFUGbvEmoQWyZTAh///6plgAAAwDwgAAAABhBn9pFFSwz/wIXh2UxjMVT4Nh4\n",
       "BPQDz4AAAAARAZ/5dEK/A5mk0mYJiTlYsoEAAAARAZ/7akK/A5zC+iqXUlO4SsAAAAAVQZvgSahB\n",
       "bJlMCH///qmWAAADAPCBAAAAGEGeHkUVLDP/AheHZTGMxVPg2HgE9APPgQAAABEBnj10Qr8DmaTS\n",
       "ZgmJOViygAAAABEBnj9qQr8DnML6KpdSU7hKwQAAABVBmiRJqEFsmUwId//+qZYAAAMA8IAAAAAY\n",
       "QZ5CRRUsM/8CF4dlMYzFU+DYeAT0A8+BAAAAEQGeYXRCvwOZpNJmCYk5WLKBAAAAEQGeY2pCvwOc\n",
       "wvoql1JTuErAAAAAFUGaaEmoQWyZTAh3//6plgAAAwDwgAAAABhBnoZFFSwz/wIXh2UxjMVT4Nh4\n",
       "BPQDz4EAAAARAZ6ldEK/A5mk0mYJiTlYsoAAAAARAZ6nakK/A5zC+iqXUlO4SsEAAAAVQZqsSahB\n",
       "bJlMCHf//qmWAAADAPCAAAAAGEGeykUVLDP/AheHZTGMxVPg2HgE9APPgQAAABEBnul0Qr8DmaTS\n",
       "ZgmJOViygQAAABEBnutqQr8DnML6KpdSU7hKwQAAACVBmvBJqEFsmUwIZ//+nhAAAaYSvDLS58GF\n",
       "jGPir6PUMy2ntuyDAAAAHkGfDkUVLDP/AheHZTGMxVPg2HgHD2NjY5LO56Tt3QAAABkBny10Qr8D\n",
       "maTSZgmJOX/SU/Kc0jgQnOhAAAAAEQGfL2pCvwOcwvoql1JTuErBAAAAE0GbMUmoQWyZTAhX//44\n",
       "QAAAHHAAABDibW9vdgAAAGxtdmhkAAAAAAAAAAAAAAAAAAAD6AAAOpgAAQAAAQAAAAAAAAAAAAAA\n",
       "AAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n",
       "AAAAAAAAAgAAEAx0cmFrAAAAXHRraGQAAAADAAAAAAAAAAAAAAABAAAAAAAAOpgAAAAAAAAAAAAA\n",
       "AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAbAAAAEgAAAAAAAkZWR0\n",
       "cwAAABxlbHN0AAAAAAAAAAEAADqYAAAEAAABAAAAAA+EbWRpYQAAACBtZGhkAAAAAAAAAAAAAAAA\n",
       "AAAoAAACWABVxAAAAAAALWhkbHIAAAAAAAAAAHZpZGUAAAAAAAAAAAAAAABWaWRlb0hhbmRsZXIA\n",
       "AAAPL21pbmYAAAAUdm1oZAAAAAEAAAAAAAAAAAAAACRkaW5mAAAAHGRyZWYAAAAAAAAAAQAAAAx1\n",
       "cmwgAAAAAQAADu9zdGJsAAAAs3N0c2QAAAAAAAAAAQAAAKNhdmMxAAAAAAAAAAEAAAAAAAAAAAAA\n",
       "AAAAAAAAAbABIABIAAAASAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n",
       "GP//AAAAMWF2Y0MBZAAV/+EAGGdkABWs2UGwloQAAAMABAAAAwCgPFi2WAEABmjr48siwAAAABx1\n",
       "dWlka2hA8l8kT8W6OaUbzwMj8wAAAAAAAAAYc3R0cwAAAAAAAAABAAABLAAAAgAAAAAYc3RzcwAA\n",
       "AAAAAAACAAAAAQAAAPsAAAkQY3R0cwAAAAAAAAEgAAAAAQAABAAAAAABAAAGAAAAAAEAAAIAAAAA\n",
       "AQAACAAAAAACAAACAAAAAAEAAAgAAAAAAgAAAgAAAAABAAAKAAAAAAEAAAQAAAAAAQAAAAAAAAAB\n",
       "AAACAAAAAAEAAAgAAAAAAgAAAgAAAAABAAAKAAAAAAEAAAQAAAAAAQAAAAAAAAABAAACAAAAAAEA\n",
       "AAgAAAAAAgAAAgAAAAABAAAKAAAAAAEAAAQAAAAAAQAAAAAAAAABAAACAAAAAAEAAAQAAAAAAQAA\n",
       "CAAAAAACAAACAAAAAAEAAAgAAAAAAgAAAgAAAAABAAAIAAAAAAIAAAIAAAAAAQAABgAAAAABAAAC\n",
       "AAAAAAEAAAQAAAAAAQAACgAAAAABAAAEAAAAAAEAAAAAAAAAAQAAAgAAAAABAAAKAAAAAAEAAAQA\n",
       "AAAAAQAAAAAAAAABAAACAAAAAAEAAAgAAAAAAgAAAgAAAAABAAAIAAAAAAIAAAIAAAAAAQAACgAA\n",
       "AAABAAAEAAAAAAEAAAAAAAAAAQAAAgAAAAABAAAKAAAAAAEAAAQAAAAAAQAAAAAAAAABAAACAAAA\n",
       "AAEAAAYAAAAAAQAAAgAAAAABAAAEAAAAAAEAAAoAAAAAAQAABAAAAAABAAAAAAAAAAEAAAIAAAAA\n",
       "AQAACAAAAAACAAACAAAAAAEAAAgAAAAAAgAAAgAAAAABAAAKAAAAAAEAAAQAAAAAAQAAAAAAAAAB\n",
       "AAACAAAAAAEAAAoAAAAAAQAABAAAAAABAAAAAAAAAAEAAAIAAAAAAQAACgAAAAABAAAEAAAAAAEA\n",
       "AAAAAAAAAQAAAgAAAAABAAAKAAAAAAEAAAQAAAAAAQAAAAAAAAABAAACAAAAAAEAAAoAAAAAAQAA\n",
       "BAAAAAABAAAAAAAAAAEAAAIAAAAAAQAACgAAAAABAAAEAAAAAAEAAAAAAAAAAQAAAgAAAAABAAAK\n",
       "AAAAAAEAAAQAAAAAAQAAAAAAAAABAAACAAAAAAEAAAoAAAAAAQAABAAAAAABAAAAAAAAAAEAAAIA\n",
       "AAAAAQAACgAAAAABAAAEAAAAAAEAAAAAAAAAAQAAAgAAAAABAAAKAAAAAAEAAAQAAAAAAQAAAAAA\n",
       "AAABAAACAAAAAAEAAAoAAAAAAQAABAAAAAABAAAAAAAAAAEAAAIAAAAAAQAACgAAAAABAAAEAAAA\n",
       "AAEAAAAAAAAAAQAAAgAAAAABAAAKAAAAAAEAAAQAAAAAAQAAAAAAAAABAAACAAAAAAEAAAoAAAAA\n",
       "AQAABAAAAAABAAAAAAAAAAEAAAIAAAAAAQAACgAAAAABAAAEAAAAAAEAAAAAAAAAAQAAAgAAAAAB\n",
       "AAAKAAAAAAEAAAQAAAAAAQAAAAAAAAABAAACAAAAAAEAAAoAAAAAAQAABAAAAAABAAAAAAAAAAEA\n",
       "AAIAAAAAAQAACgAAAAABAAAEAAAAAAEAAAAAAAAAAQAAAgAAAAABAAAKAAAAAAEAAAQAAAAAAQAA\n",
       "AAAAAAABAAACAAAAAAEAAAoAAAAAAQAABAAAAAABAAAAAAAAAAEAAAIAAAAAAQAACgAAAAABAAAE\n",
       "AAAAAAEAAAAAAAAAAQAAAgAAAAABAAAKAAAAAAEAAAQAAAAAAQAAAAAAAAABAAACAAAAAAEAAAoA\n",
       "AAAAAQAABAAAAAABAAAAAAAAAAEAAAIAAAAAAQAACgAAAAABAAAEAAAAAAEAAAAAAAAAAQAAAgAA\n",
       "AAABAAAKAAAAAAEAAAQAAAAAAQAAAAAAAAABAAACAAAAAAEAAAoAAAAAAQAABAAAAAABAAAAAAAA\n",
       "AAEAAAIAAAAAAQAACgAAAAABAAAEAAAAAAEAAAAAAAAAAQAAAgAAAAABAAAKAAAAAAEAAAQAAAAA\n",
       "AQAAAAAAAAABAAACAAAAAAEAAAoAAAAAAQAABAAAAAABAAAAAAAAAAEAAAIAAAAAAQAACgAAAAAB\n",
       "AAAEAAAAAAEAAAAAAAAAAQAAAgAAAAABAAAKAAAAAAEAAAQAAAAAAQAAAAAAAAABAAACAAAAAAEA\n",
       "AAoAAAAAAQAABAAAAAABAAAAAAAAAAEAAAIAAAAAAQAACgAAAAABAAAEAAAAAAEAAAAAAAAAAQAA\n",
       "AgAAAAABAAAKAAAAAAEAAAQAAAAAAQAAAAAAAAABAAACAAAAAAEAAAoAAAAAAQAABAAAAAABAAAA\n",
       "AAAAAAEAAAIAAAAAAQAACgAAAAABAAAEAAAAAAEAAAAAAAAAAQAAAgAAAAABAAAKAAAAAAEAAAQA\n",
       "AAAAAQAAAAAAAAABAAACAAAAAAEAAAoAAAAAAQAABAAAAAABAAAAAAAAAAEAAAIAAAAAAQAACgAA\n",
       "AAABAAAEAAAAAAEAAAAAAAAAAQAAAgAAAAABAAAKAAAAAAEAAAQAAAAAAQAAAAAAAAABAAACAAAA\n",
       "AAEAAAoAAAAAAQAABAAAAAABAAAAAAAAAAEAAAIAAAAAAQAACgAAAAABAAAEAAAAAAEAAAAAAAAA\n",
       "AQAAAgAAAAABAAAKAAAAAAEAAAQAAAAAAQAAAAAAAAABAAACAAAAAAEAAAgAAAAAAgAAAgAAAAAB\n",
       "AAAEAAAAAAEAAAoAAAAAAQAABAAAAAABAAAAAAAAAAEAAAIAAAAAAQAACgAAAAABAAAEAAAAAAEA\n",
       "AAAAAAAAAQAAAgAAAAABAAAKAAAAAAEAAAQAAAAAAQAAAAAAAAABAAACAAAAAAEAAAoAAAAAAQAA\n",
       "BAAAAAABAAAAAAAAAAEAAAIAAAAAAQAACgAAAAABAAAEAAAAAAEAAAAAAAAAAQAAAgAAAAABAAAK\n",
       "AAAAAAEAAAQAAAAAAQAAAAAAAAABAAACAAAAAAEAAAoAAAAAAQAABAAAAAABAAAAAAAAAAEAAAIA\n",
       "AAAAAQAACgAAAAABAAAEAAAAAAEAAAAAAAAAAQAAAgAAAAABAAAKAAAAAAEAAAQAAAAAAQAAAAAA\n",
       "AAABAAACAAAAAAEAAAoAAAAAAQAABAAAAAABAAAAAAAAAAEAAAIAAAAAAQAACgAAAAABAAAEAAAA\n",
       "AAEAAAAAAAAAAQAAAgAAAAABAAAKAAAAAAEAAAQAAAAAAQAAAAAAAAABAAACAAAAAAEAAAQAAAAA\n",
       "HHN0c2MAAAAAAAAAAQAAAAEAAAEsAAAAAQAABMRzdHN6AAAAAAAAAAAAAAEsAAAQGgAAAkEAAADR\n",
       "AAABjAAAAPUAAAC/AAABOAAAALIAAAB3AAAA1wAAALkAAACcAAAAjAAAAOUAAACOAAAATQAAALcA\n",
       "AAB7AAAAWwAAAGQAAADcAAAAnAAAAGQAAAC3AAAAmgAAAHYAAAByAAAAgQAAAKgAAACkAAAAaAAA\n",
       "ALcAAACdAAAAVgAAAKgAAAB2AAAAWwAAAI8AAABhAAAAiQAAAI4AAACCAAAAaQAAAGEAAACcAAAA\n",
       "dwAAAEgAAABPAAAAswAAAFAAAABGAAAAfgAAAFEAAAA/AAAA1wAAAGEAAAA8AAAAPwAAAMYAAAC5\n",
       "AAAAUgAAAHYAAACgAAAAdgAAALcAAAC5AAAAmQAAAEcAAABGAAAApgAAAF4AAAAzAAAAyAAAAGMA\n",
       "AAA0AAAAqwAAAF8AAAA0AAAAMQAAAKQAAABFAAAAKwAAACkAAABdAAAAOwAAACoAAAApAAAAGwAA\n",
       "ADEAAAAiAAAAIQAAACIAAAAzAAAAJAAAACEAAAAvAAAANgAAACcAAAAhAAAAGQAAADAAAAAhAAAA\n",
       "IQAAACIAAAAzAAAAIQAAACQAAAAqAAAANwAAACEAAAAoAAAAIgAAADMAAAAkAAAAIQAAADsAAAA1\n",
       "AAAAJgAAACEAAAAhAAAAMwAAACQAAAAhAAAAGQAAADAAAAAhAAAAIQAAAEcAAAA1AAAAIQAAACYA\n",
       "AAAiAAAAMwAAACQAAAAhAAAAKAAAADYAAAAhAAAAJwAAACIAAAAzAAAAJQAAACEAAAAiAAAAMwAA\n",
       "ACQAAAAhAAAAGQAAADAAAAAhAAAAIQAAABkAAAAwAAAAIQAAACEAAAAZAAAAMAAAACEAAAAhAAAA\n",
       "GQAAADAAAAAhAAAAIQAAABkAAAAwAAAAIQAAACEAAABsAAAANwAAACgAAAAhAAAAGQAAADAAAAAh\n",
       "AAAAIQAAACkAAAA2AAAAJwAAACEAAAAiAAAAMwAAACEAAAAkAAAAQwAAADMAAAAkAAAAIQAAABkA\n",
       "AAAwAAAAIQAAACEAAAAZAAAAMAAAACEAAAAhAAAALwAAADkAAAAmAAAAJQAAABkAAAAwAAAAIQAA\n",
       "ACEAAAApAAAANgAAACEAAAAnAAAAGQAAADAAAAAhAAAAIQAAABkAAAAwAAAAIQAAACEAAAAZAAAA\n",
       "MAAAACEAAAAhAAAAGQAAADAAAAAhAAAAIQAAABkAAAAwAAAAIQAAACEAAAAiAAAANAAAACEAAAAl\n",
       "AAAASAAAADQAAAAhAAAALgAAADAAAAAxAAAAIgAAACEAAAAhAAAAMwAAACQAAAAhAAAAGQAAADAA\n",
       "AAAhAAAAIQAAABcAAAAuAAAAIQAADwQAAAILAAAAWgAAADwAAAAsAAAANAAAACsAAAAnAAAAFQAA\n",
       "ABkAAAAaAAAAFQAAABUAAAAzAAAAIwAAABkAAAAZAAAAGQAAABwAAAAVAAAAFQAAACoAAAAjAAAA\n",
       "GQAAABoAAAAZAAAAHAAAABUAAAAVAAAAGQAAABwAAAAVAAAAFQAAABkAAAAcAAAAFQAAABUAAAAZ\n",
       "AAAAHAAAABUAAAAVAAAAGQAAABwAAAAVAAAAFQAAACkAAAAiAAAAHQAAABUAAAAXAAAAFHN0Y28A\n",
       "AAAAAAAAAQAAACwAAABidWR0YQAAAFptZXRhAAAAAAAAACFoZGxyAAAAAAAAAABtZGlyYXBwbAAA\n",
       "AAAAAAAAAAAAAC1pbHN0AAAAJal0b28AAAAdZGF0YQAAAAEAAAAATGF2ZjU4LjIwLjEwMA==\n",
       "\">\n",
       "  Your browser does not support the video tag.\n",
       "</video>"
      ],
      "text/plain": [
       "<matplotlib.animation.FuncAnimation at 0x7f71984836d0>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "x, = prob_tf(k)\n",
    "x_np = x.numpy()\n",
    "\n",
    "fig, ax = plt.subplots()\n",
    "ax.set_xlim((0, 1))\n",
    "ax.set_ylim((0, w*4))\n",
    "rects = []\n",
    "for i in range(n):\n",
    "    plt.axvline(x_targ[i].numpy(), c='k')\n",
    "    rect = patches.Rectangle((x_np[i + 1] - w/2, 0), w, w, linewidth=1, edgecolor='k', facecolor='none')\n",
    "    ax.add_patch(rect)\n",
    "    rects.append(rect)\n",
    "\n",
    "def animate(i):\n",
    "    global k\n",
    "    with tf.GradientTape() as tape:\n",
    "        tape.watch(k)\n",
    "        x, = prob_tf(k)\n",
    "        loss = tf.reduce_sum((x[1:-1] - x_targ)**2)\n",
    "    grad, = tape.gradient(loss, [k])\n",
    "    k = k - .1 * grad\n",
    "    k = tf.maximum(k, 0.0)\n",
    "    for i in range(n):\n",
    "        rects[i].xy = (x.numpy()[i + 1] - w/2, 0)\n",
    "    return rects\n",
    "\n",
    "anim = animation.FuncAnimation(fig, animate,\n",
    "                               frames=300, interval=50, blit=True)\n",
    "anim"
   ]
  }
 ],
 "metadata": {
  "@webio": {
   "lastCommId": null,
   "lastKernelId": null
  },
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.5rc1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
